Exemplo n.º 1
0
    def test_single_image(self, client):
        """Test getting single image."""
        plugin_name = PluginNameEnum.IMAGE.value

        # Get train id by restful api `train-jobs`.
        response = client.get(get_url(TRAIN_JOB_URL, dict()))
        train_jobs = response.get_json()
        train_id = train_jobs.get('train_jobs')[0].get('train_id')

        # Get tag by restful api `plugins`.
        params = dict(train_id=train_id, plugin=plugin_name)
        response = client.get(get_url(PLUGIN_URL, params))
        plugins = response.get_json().get('plugins')
        test_image_tag = plugins.get(plugin_name)[0]

        # Get step by restful api `metadata`.
        params = dict(train_id=train_id, tag=test_image_tag)
        response = client.get(get_url(METADATA_URL, params))
        metadata = response.get_json().get("metadatas")
        test_step = metadata[0].get('step')

        # Query single image.
        expected_image_tensor = gbl.get_single_image(train_id, test_image_tag, test_step)

        params = dict(train_id=train_id, tag=test_image_tag, step=test_step)
        url = get_url(SINGLE_IMAGE_URL, params)
        response = client.get(url)
        recv_image_tensor = get_image_tensor_from_bytes(response.data)

        assert expected_image_tensor.any() == recv_image_tensor.any()
 def test_query_train_jobs_with_exceeded_limit(self, client):
     """Test query train jobs with exceeded limit."""
     params = dict(offset=0, limit=1000)
     url = get_url(BASE_URL, params)
     response = client.get(url)
     result = response.get_json()
     assert result.get('error_code') == '50540002'
 def test_query_train_jobs_without_offset(self, client):
     """Test query train jobs without offset."""
     params = dict(limit=10)
     url = get_url(BASE_URL, params)
     response = client.get(url)
     result = response.get_json()
     assert result.get('total') == SUMMARY_DIR_NUM
     assert len(result.get('train_jobs')) == min(10, SUMMARY_DIR_NUM)
    def test_query_single_node_success(self, client, node_name, result_file):
        """Query single node."""
        train_id = gbl.get_train_ids()[0]

        params = dict(train_id=train_id, name=node_name)
        url = get_url(BASE_URL, params)
        response = client.get(url)
        assert response.status_code == 200
        self.compare_result_with_file(response.get_json(), result_file)
 def test_metadata_reservoir(self, client):
     """Test getting image metadata, mainly test reservoir."""
     plugin_name = PluginNameEnum.IMAGE.value
     train_id = RESERVOIR_TRAIN_ID
     tag_name = gbl.get_tags(train_id, plugin_name)[0]
     params = dict(train_id=train_id, tag=tag_name)
     url = get_url(BASE_URL, params)
     response = client.get(url)
     metadata = response.get_json().get("metadatas")
     assert len(metadata) == settings.MAX_IMAGE_STEP_SIZE_PER_TAG
Exemplo n.º 6
0
    def test_plugins_with_train_id_not_in_cache(self, client):
        """Test getting plugins with train id that not in loader pool."""
        train_id = "./summary0"
        params = dict(train_id=train_id)
        url = get_url(BASE_URL, params)
        response = client.get(url)
        plugins = response.get_json().get('plugins')

        for plugin_name in PluginNameEnum.list_members():
            # Empty list.
            assert not plugins.get(plugin_name)
 def test_search_nodes_success(self, client, search_content, offset, limit, result_file):
     """Search node with parameters: offset is 0, limit is 1000."""
     train_id = gbl.get_train_ids()[0]
     params = dict(train_id=train_id,
                   search=search_content,
                   offset=offset,
                   limit=limit)
     url = get_url(BASE_URL, params)
     response = client.get(url)
     assert response.status_code == 200
     self.compare_result_with_file(response.get_json(), result_file)
Exemplo n.º 8
0
    def test_single_image_no_tag(self, client):
        """Test getting single image without tag."""
        params = dict(train_id="./summary0", step=1)
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response['error_msg'] == "Param missing. 'tag' is required."
Exemplo n.º 9
0
    def test_plugins_with_special_train_id(self, client, train_id):
        """Test passing train_id with special character, null_byte, invalid id, and wrong type."""
        params = dict(train_id=train_id)
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540002'
        assert response['error_msg'] == "Invalid parameter value. Can not find " \
                                        "the train job in data manager."
Exemplo n.º 10
0
    def test_single_image_with_special_step(self, client, step):
        """Test getting single image with special step."""
        params = dict(train_id="./summary0", tag="tag_name_0/image", step=step)
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540001'
        assert response[
            'error_msg'] == "Invalid parameter type. 'step' expect Integer type."
Exemplo n.º 11
0
    def test_plugins_no_train_id(self, client):
        """Test getting plugins without train_id."""
        params = dict()
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response[
            'error_msg'] == "Param missing. 'train_id' is required."
Exemplo n.º 12
0
    def test_single_image_with_special_train_id(self, client, train_id):
        """Test passing train_id with special character, invalid value, and wrong type."""
        params = dict(train_id=train_id, tag="tag_name_0/image", step=1)
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540002'
        assert response['error_msg'] == "Invalid parameter value. Can not find any data " \
                                        "in loader pool about the train job."
Exemplo n.º 13
0
    def test_single_image_with_special_tag(self, client, tag):
        """Test passing tag with special character, invalid value, and wrong type."""
        train_id = gbl.get_train_ids()[0]
        params = dict(train_id=train_id, tag=tag, step=1)
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540002'
        assert response['error_msg'] == "Invalid parameter value. Can not find any data " \
                                        "in this train job by given tag."
Exemplo n.º 14
0
    def test_single_image_with_invalid_step(self, client):
        """Test getting single image with invalid step."""
        train_id = gbl.get_train_ids()[0]
        params = dict(train_id=train_id, tag="tag_name_0/image", step=1000)
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540002'
        assert response['error_msg'] == "Invalid parameter value. Can not find the step " \
                                        "with given train job id and tag."
Exemplo n.º 15
0
    def test_plugins_with_special_manual_update(self, client, manual_update):
        """Test passing manual_update with special character, wrong value, and wrong type."""
        train_id = gbl.get_train_ids()[0]
        params = dict(train_id=train_id, manual_update=manual_update)
        url = get_url(BASE_URL, params)

        response = client.get(url)
        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540002'
        assert response['error_msg'] == "Invalid parameter value. The value of " \
                                        "manual_update must be 'false' or 'true'."
Exemplo n.º 16
0
    def test_metadata_multiple(self, client):
        """Test getting image metadata, mainly test a summary dir with multiple logs."""
        plugin_name = PluginNameEnum.IMAGE.value
        train_id = MULTIPLE_TRAIN_ID
        tag_name = gbl.get_tags(train_id, plugin_name)[0]
        expected_metadata = gbl.get_metadata(train_id, tag_name)

        params = dict(train_id=train_id, tag=tag_name)
        url = get_url(BASE_URL, params)
        response = client.get(url)
        metadata = response.get_json().get("metadatas")

        assert metadata == expected_metadata
Exemplo n.º 17
0
    def test_metadata(self, client):
        """Test getting image metadata."""
        plugin_name = PluginNameEnum.IMAGE.value
        train_id = gbl.get_train_ids()[0]
        tag_name = gbl.get_tags(train_id, plugin_name)[0]
        expected_metadata = gbl.get_metadata(train_id, tag_name)

        params = dict(train_id=train_id, tag=tag_name)
        url = get_url(BASE_URL, params)
        response = client.get(url)
        metadata = response.get_json().get("metadatas")

        assert metadata == expected_metadata
Exemplo n.º 18
0
    def test_single_image(self, client):
        """Test getting single image."""
        step = 1
        plugin_name = PluginNameEnum.IMAGE.value
        train_id = gbl.get_train_ids()[0]
        tag_name = gbl.get_tags(train_id, plugin_name)[0]
        expected_image_tensor = gbl.get_single_image(train_id, tag_name, step)

        params = dict(train_id=train_id, tag=tag_name, step=step)
        url = get_url(BASE_URL, params)
        response = client.get(url)
        recv_image_tensor = get_image_tensor_from_bytes(response.data)

        assert expected_image_tensor.any() == recv_image_tensor.any()
 def test_query_single_train_task(self, client):
     """"Test query single train task."""
     for train_id in gbl.summaries_metadata:
         expected = gbl.summaries_metadata.get(train_id).get("plugins")
         for plugin_name in PluginNameEnum.list_members():
             params = dict(train_id=train_id, plugin_name=plugin_name)
             url = get_url(BASE_URL, params)
             response = client.get(url)
             result = response.get_json()
             tags = result["train_jobs"][0]["tags"]
             if plugin_name == PluginNameEnum.GRAPH.value:
                 assert len(tags) == len(expected[plugin_name])
             else:
                 assert sorted(tags) == sorted(expected[plugin_name])
Exemplo n.º 20
0
    def test_image_metadata(self, client):
        """Test getting image metadata."""
        plugin_name = PluginNameEnum.IMAGE.value

        # Get train id by restful api `train-jobs`.
        response = client.get(get_url(TRAIN_JOB_URL, dict()))
        train_jobs = response.get_json()
        train_id = train_jobs.get('train_jobs')[-1].get('train_id')

        # Get tag by restful api `plugins`.
        params = dict(train_id=train_id, plugin=plugin_name)
        response = client.get(get_url(PLUGIN_URL, params))
        plugins = response.get_json().get('plugins')
        test_image_tag = plugins.get(plugin_name)[0]

        expected_metadata = gbl.get_metadata(train_id, test_image_tag)

        # Query image metadata.
        params = dict(train_id=train_id, tag=test_image_tag)
        response = client.get(get_url(METADATA_URL, params))
        metadata = response.get_json().get("metadatas")

        assert metadata == expected_metadata
Exemplo n.º 21
0
    def test_metadata(self, client):
        """Test getting scalar metadata."""
        plugin_name = PluginNameEnum.SCALAR.value
        train_id = gbl.get_train_ids()[0]
        tag_name = gbl.get_tags(train_id, plugin_name)[0]
        expected_metadata = gbl.get_metadata(train_id, tag_name)

        params = dict(train_id=train_id, tag=tag_name)
        url = get_url(BASE_URL, params)
        response = client.get(url)
        metadata = response.get_json().get("metadatas")

        for metadata, expected_metadata in zip(metadata, expected_metadata):
            assert metadata.get("wall_time") == expected_metadata.get("wall_time")
            assert metadata.get("step") == expected_metadata.get("step")
            assert metadata.get("value") - expected_metadata.get("value") < 1e-6
Exemplo n.º 22
0
    def test_plugins(self, client):
        """Test getting plugins."""
        train_id = gbl.get_train_ids()[0]
        expected_plugins = gbl.summaries_metadata.get(train_id).get("plugins")

        params = dict(train_id=train_id)
        url = get_url(BASE_URL, params)
        response = client.get(url)
        plugins = response.get_json().get('plugins')
        for plugin_name in PluginNameEnum.list_members():
            if plugin_name == PluginNameEnum.GRAPH.value:
                assert len(plugins.get(plugin_name)) == len(
                    expected_plugins.get(plugin_name))
            else:
                assert sorted(plugins.get(plugin_name)) == sorted(
                    expected_plugins.get(plugin_name))