Ejemplo n.º 1
0
    def test_init_empty_cdf(self):
        self.client.time_series.retrieve_multiple = Mock(
            side_effect=CogniteNotFoundError([{
                "externalId": "pre_gauge"
            }]))

        return_asset = Asset(id=123, external_id="asset", name="asset")
        new_asset = Asset(external_id="asset", name="asset")

        self.client.assets.create = Mock(return_value=return_asset)

        pusher = CognitePusher(self.client,
                               external_id_prefix="pre_",
                               asset=new_asset,
                               push_interval=1)

        # Assert time series created
        # Hacky assert_called_once_with as the TimeSeries object is not the same obj, just equal content
        self.client.time_series.create.assert_called_once()
        print(self.client.time_series.create.call_args_list)
        self.assertDictEqual(
            self.client.time_series.create.call_args_list[0][0][0][0].dump(),
            TimeSeries(external_id="pre_gauge",
                       name="gauge",
                       legacy_name="pre_gauge",
                       description="Test gauge",
                       asset_id=123).dump(),
        )

        # Assert asset created
        self.client.assets.create.assert_called_once_with(new_asset)
Ejemplo n.º 2
0
    def test_some_in_cdf(self):
        existing = [TimeSeries(external_id="a")]
        new = [TimeSeries(external_id="b")]

        self.client.time_series.retrieve_multiple = Mock(
            side_effect=CogniteNotFoundError([{
                "externalId": ts.external_id
            } for ts in new]))

        ensure_time_series(self.client, existing + new)

        self.client.time_series.create.assert_called_once_with(new)
Ejemplo n.º 3
0
def collect_exc_info_and_raise(
    exceptions: List[Exception],
    successful: Optional[List] = None,
    failed: Optional[List] = None,
    unknown: Optional[List] = None,
    unwrap_fn: Optional[Callable] = None,
):
    missing = []
    duplicated = []
    missing_exc = None
    dup_exc = None
    unknown_exc = None
    for exc in exceptions:
        if isinstance(exc, CogniteAPIError):
            if exc.code in [400, 422] and exc.missing is not None:
                missing.extend(exc.missing)
                missing_exc = exc
            elif exc.code == 409 and exc.duplicated is not None:
                duplicated.extend(exc.duplicated)
                dup_exc = exc
            else:
                unknown_exc = exc
        else:
            unknown_exc = exc

    if unknown_exc:
        if isinstance(unknown_exc, CogniteAPIError) and (failed or unknown):
            raise CogniteAPIError(
                message=unknown_exc.message,
                code=unknown_exc.code,
                x_request_id=unknown_exc.x_request_id,
                missing=missing,
                duplicated=duplicated,
                successful=successful,
                failed=failed,
                unknown=unknown,
                unwrap_fn=unwrap_fn,
            )
        raise unknown_exc

    if missing_exc:
        raise CogniteNotFoundError(not_found=missing,
                                   successful=successful,
                                   failed=failed,
                                   unknown=unknown,
                                   unwrap_fn=unwrap_fn) from missing_exc

    if dup_exc:
        raise CogniteDuplicatedError(duplicated=duplicated,
                                     successful=successful,
                                     failed=failed,
                                     unknown=unknown,
                                     unwrap_fn=unwrap_fn) from dup_exc
Ejemplo n.º 4
0
    def test_nothing_in_cdf(self):
        time_series = [
            TimeSeries(external_id="a"),
            TimeSeries(external_id="b")
        ]

        self.client.time_series.retrieve_multiple = Mock(
            side_effect=CogniteNotFoundError([{
                "externalId": ts.external_id
            } for ts in time_series]))

        ensure_time_series(self.client, time_series)

        self.client.time_series.create.assert_called_once_with(time_series)