コード例 #1
0
ファイル: test_feature_set.py プロジェクト: heysachin/feast
    def test_from_feature_set(self):
        feature_set = FeatureSet("test", "test")
        feature_set.version = 2
        ref = FeatureSetRef.from_feature_set(feature_set)

        assert ref.name == "test"
        assert ref.project == "test"
        assert ref.version == 2
コード例 #2
0
ファイル: test_client.py プロジェクト: dav009/feast
    def test_list_ingest_jobs(self, mocked_client, mocker):
        mocker.patch.object(
            mocked_client,
            "_core_service_stub",
            return_value=Core.CoreServiceStub(grpc.insecure_channel("")),
        )

        feature_set_proto = FeatureSetProto(
            spec=FeatureSetSpecProto(
                project="test", name="driver", max_age=Duration(seconds=3600),
            )
        )

        mocker.patch.object(
            mocked_client._core_service_stub,
            "ListIngestionJobs",
            return_value=ListIngestionJobsResponse(
                jobs=[
                    IngestJobProto(
                        id="kafka-to-redis",
                        external_id="job-2222",
                        status=IngestionJobStatus.RUNNING,
                        feature_sets=[feature_set_proto],
                        source=Source(
                            type=SourceType.KAFKA,
                            kafka_source_config=KafkaSourceConfig(
                                bootstrap_servers="localhost:9092", topic="topic"
                            ),
                        ),
                        store=Store(name="redis"),
                    )
                ]
            ),
        )

        # list ingestion jobs by target feature set reference
        ingest_jobs = mocked_client.list_ingest_jobs(
            feature_set_ref=FeatureSetRef.from_feature_set(
                FeatureSet.from_proto(feature_set_proto)
            )
        )
        assert len(ingest_jobs) >= 1

        ingest_job = ingest_jobs[0]
        assert (
            ingest_job.status == IngestionJobStatus.RUNNING
            and ingest_job.id == "kafka-to-redis"
            and ingest_job.external_id == "job-2222"
            and ingest_job.feature_sets[0].name == "driver"
            and ingest_job.source.source_type == "Kafka"
        )
コード例 #3
0
def test_all_types_ingest_jobs(client, all_types_dataframe):
    # list ingestion jobs given featureset
    all_types_fs = client.get_feature_set(name="all_types")
    ingest_jobs = client.list_ingest_jobs(
        feature_set_ref=FeatureSetRef.from_feature_set(all_types_fs))
    # filter ingestion jobs to only those that are running
    ingest_jobs = [job for job in ingest_jobs if job.status == IngestionJobStatus.RUNNING]
    assert len(ingest_jobs) >= 1

    for ingest_job in ingest_jobs:
        # restart ingestion ingest_job
        client.restart_ingest_job(ingest_job)
        ingest_job.wait(IngestionJobStatus.RUNNING)
        assert ingest_job.status == IngestionJobStatus.RUNNING

        # stop ingestion ingest_job
        client.stop_ingest_job(ingest_job)
        ingest_job.wait(IngestionJobStatus.ABORTED)
        assert ingest_job.status == IngestionJobStatus.ABORTED
コード例 #4
0
def test_basic_ingest_jobs(client):
    # list ingestion jobs given featureset
    cust_trans_fs = client.get_feature_set(name="customer_transactions")
    ingest_jobs = client.list_ingest_jobs(
        feature_set_ref=FeatureSetRef.from_feature_set(cust_trans_fs))
    # filter ingestion jobs to only those that are running
    ingest_jobs = [job for job in ingest_jobs if job.status == IngestionJobStatus.RUNNING]
    assert len(ingest_jobs) >= 1

    for ingest_job in ingest_jobs:
        # restart ingestion ingest_job
        client.restart_ingest_job(ingest_job)
        ingest_job.wait(IngestionJobStatus.RUNNING)
        assert ingest_job.status == IngestionJobStatus.RUNNING

        # stop ingestion ingest_job
        client.stop_ingest_job(ingest_job)
        ingest_job.wait(IngestionJobStatus.ABORTED)
        assert ingest_job.status == IngestionJobStatus.ABORTED
コード例 #5
0
def test_all_types_ingest_jobs(client, all_types_dataframe):
    # list ingestion jobs given featureset
    all_types_fs = client.get_feature_set(name="all_types")
    ingest_jobs = client.list_ingest_jobs(
        feature_set_ref=FeatureSetRef.from_feature_set(all_types_fs))
    # filter ingestion jobs to only those that are running
    ingest_jobs = [
        job for job in ingest_jobs if job.status == IngestionJobStatus.RUNNING
    ]
    assert len(ingest_jobs) >= 1

    ingest_job = ingest_jobs[0]
    # restart ingestion ingest_job
    # restart means stop current job
    # (replacement will be automatically spawned)
    client.restart_ingest_job(ingest_job)
    # wait for replacement to be created
    time.sleep(15)  # should be more than polling_interval

    # id without timestamp part
    # that remains the same between jobs
    shared_id = "-".join(ingest_job.id.split("-")[:-1])
    replacement_jobs = [
        job for job in ingest_jobs if job.status == IngestionJobStatus.RUNNING
        and job.id.startswith(shared_id)
    ]

    assert len(replacement_jobs) >= 1
    replacement_job = replacement_jobs[0]

    replacement_job.wait(IngestionJobStatus.RUNNING)
    assert replacement_job.status == IngestionJobStatus.RUNNING

    # stop ingestion ingest_job
    client.stop_ingest_job(replacement_job)
    replacement_job.wait(IngestionJobStatus.ABORTED)
    assert replacement_job.status == IngestionJobStatus.ABORTED