@@ -44,6 +44,7 @@ def __init__(self, date: str):
44
44
45
45
@pytest .fixture
46
46
def dummy1 (backend1 , requests_mock ) -> DummyBackend :
47
+ # TODO: rename this fixture to dummy_backed1
47
48
dummy = DummyBackend (requests_mock = requests_mock , backend_url = backend1 , job_id_template = "1-jb-{i}" )
48
49
dummy .setup_basic_requests_mocks ()
49
50
dummy .register_user (bearer_token = TEST_USER_BEARER_TOKEN , user_id = TEST_USER )
@@ -651,6 +652,7 @@ def test_create_job_simple(self, flask_app, api100, zk_db, dummy1):
651
652
"process" : {"process_graph" : pg },
652
653
"metadata" : {},
653
654
"job_options" : {"split_strategy" : "crossbackend" },
655
+ "result_jobs" : ["main" ],
654
656
}
655
657
656
658
assert zk_db .get_pjob_status (user_id = TEST_USER , pjob_id = pjob_id ) == {
@@ -722,6 +724,7 @@ def test_create_job_basic(self, flask_app, api100, zk_db, dummy1):
722
724
"process" : {"process_graph" : pg },
723
725
"metadata" : {},
724
726
"job_options" : {"split_strategy" : "crossbackend" },
727
+ "result_jobs" : ["main" ],
725
728
}
726
729
727
730
assert zk_db .get_pjob_status (user_id = TEST_USER , pjob_id = pjob_id ) == {
@@ -797,3 +800,76 @@ def test_create_job_basic(self, flask_app, api100, zk_db, dummy1):
797
800
"result" : True ,
798
801
},
799
802
}
803
+
804
+ @now .mock
805
+ def test_start_and_job_results (self , flask_app , api100 , zk_db , dummy1 ):
806
+ """Run the jobs and get results"""
807
+ api100 .set_auth_bearer_token (token = TEST_USER_BEARER_TOKEN )
808
+
809
+ pg = {
810
+ "lc1" : {"process_id" : "load_collection" , "arguments" : {"id" : "S2" }},
811
+ "lc2" : {"process_id" : "load_collection" , "arguments" : {"id" : "S2" }},
812
+ "merge" : {
813
+ "process_id" : "merge_cubes" ,
814
+ "arguments" : {"cube1" : {"from_node" : "lc1" }, "cube2" : {"from_node" : "lc2" }},
815
+ "result" : True ,
816
+ },
817
+ }
818
+
819
+ res = api100 .post (
820
+ "/jobs" ,
821
+ json = {
822
+ "process" : {"process_graph" : pg },
823
+ "job_options" : {"split_strategy" : "crossbackend" },
824
+ },
825
+ ).assert_status_code (201 )
826
+
827
+ pjob_id = "pj-20220119-123456"
828
+ expected_job_id = f"agg-{ pjob_id } "
829
+ assert res .headers ["OpenEO-Identifier" ] == expected_job_id
830
+
831
+ res = api100 .get (f"/jobs/{ expected_job_id } " ).assert_status_code (200 )
832
+ assert res .json == {
833
+ "id" : expected_job_id ,
834
+ "process" : {"process_graph" : pg },
835
+ "status" : "created" ,
836
+ "created" : self .now .rfc3339 ,
837
+ "progress" : 0 ,
838
+ }
839
+
840
+ # start job
841
+ api100 .post (f"/jobs/{ expected_job_id } /results" ).assert_status_code (202 )
842
+ dummy1 .set_job_status (TEST_USER , "1-jb-0" , status = "running" )
843
+ dummy1 .set_job_status (TEST_USER , "1-jb-1" , status = "queued" )
844
+ res = api100 .get (f"/jobs/{ expected_job_id } " ).assert_status_code (200 )
845
+ assert res .json == DictSubSet ({"id" : expected_job_id , "status" : "running" , "progress" : 0 })
846
+
847
+ # First job is ready
848
+ dummy1 .set_job_status (TEST_USER , "1-jb-0" , status = "finished" )
849
+ dummy1 .setup_assets (job_id = f"1-jb-0" , assets = ["1-jb-0-result.tif" ])
850
+ dummy1 .set_job_status (TEST_USER , "1-jb-1" , status = "running" )
851
+ res = api100 .get (f"/jobs/{ expected_job_id } " ).assert_status_code (200 )
852
+ assert res .json == DictSubSet ({"id" : expected_job_id , "status" : "running" , "progress" : 50 })
853
+
854
+ # Main job is ready too
855
+ dummy1 .set_job_status (TEST_USER , "1-jb-1" , status = "finished" )
856
+ dummy1 .setup_assets (job_id = f"1-jb-1" , assets = ["1-jb-1-result.tif" ])
857
+ res = api100 .get (f"/jobs/{ expected_job_id } " ).assert_status_code (200 )
858
+ assert res .json == DictSubSet ({"id" : expected_job_id , "status" : "finished" , "progress" : 100 })
859
+
860
+ # Get results
861
+ res = api100 .get (f"/jobs/{ expected_job_id } /results" ).assert_status_code (200 )
862
+ assert res .json == DictSubSet (
863
+ {
864
+ "id" : expected_job_id ,
865
+ "assets" : {
866
+ "main-1-jb-1-result.tif" : {
867
+ "file:nodata" : [None ],
868
+ "href" : "https://b1.test/v1/jobs/1-jb-1/results/1-jb-1-result.tif" ,
869
+ "roles" : ["data" ],
870
+ "title" : "main-1-jb-1-result.tif" ,
871
+ "type" : "application/octet-stream" ,
872
+ },
873
+ },
874
+ }
875
+ )
0 commit comments