@@ -125,93 +125,82 @@ def test_delete_job(nomad_setup):
125125
126126
127127@flaky (max_runs = 5 , min_passes = 1 )
128- @pytest .mark .skipif (
129- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 5 , 3 ), reason = "Nomad dispatch not supported"
130- )
131128def test_dispatch_job (nomad_setup ):
132129 with open ("example_batch_parameterized.json" ) as fh :
133130 job = json .loads (fh .read ())
134131 nomad_setup .job .register_job ("example-batch" , job )
135132 try :
136- nomad_setup .job .dispatch_job ("example-batch" , meta = {"time" : "500" })
133+ nomad_setup .job .dispatch_job ("example-batch" , meta = {"time" : "500" }, id_prefix_template = "run1" )
137134 except (exceptions .URLNotFoundNomadException , exceptions .BaseNomadException ) as e :
138135 print (e .nomad_resp .text )
139136 raise e
140137 assert "example-batch" in nomad_setup .job
141138
142139
143- @pytest .mark .skipif (
144- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 5 , 3 ), reason = "Nomad dispatch not supported"
145- )
140+ @flaky (max_runs = 5 , min_passes = 1 )
141+ def test_dispatch_job_idempotency (nomad_setup ):
142+ with open ("example_batch_parameterized.json" ) as fh :
143+ job = json .loads (fh .read ())
144+ nomad_setup .job .register_job ("example-batch-idempotent" , job )
145+
146+ # First dispatch should succeed
147+ try :
148+ nomad_setup .job .dispatch_job ("example-batch-idempotent" , meta = {"time" : "500" }, id_prefix_template = "run1" , idempotency_token = "737ae8cd-f237-43a5-8fad-0e6a3f94ad55" )
149+ except (exceptions .URLNotFoundNomadException , exceptions .BaseNomadException ) as e :
150+ print (e .nomad_resp .text )
151+ raise e
152+ assert "example-batch-idempotent" in nomad_setup .job
153+
154+ # Second dispatch with the same idempotency token should fail
155+ with pytest .raises (exceptions .BaseNomadException ):
156+ nomad_setup .job .dispatch_job ("example-batch-idempotent" , meta = {"time" : "500" }, id_prefix_template = "run2" , idempotency_token = "737ae8cd-f237-43a5-8fad-0e6a3f94ad55" )
157+
158+
146159def test_summary_job (nomad_setup ):
147160 j = nomad_setup .job ["example" ]
148161 assert "JobID" in nomad_setup .job .get_summary (j ["ID" ])
149162
150163
151- @pytest .mark .skipif (
152- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 4 , 0 ), reason = "Not supported in version"
153- )
154164def test_plan_job (nomad_setup ):
155165 with open ("example.json" ) as fh :
156166 job = json .loads (fh .read ())
157167 assert "Index" in nomad_setup .job .plan_job (nomad_setup .job ["example" ]["ID" ], job )
158168
159169
160- @pytest .mark .skipif (
161- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 6 , 0 ), reason = "Not supported in version"
162- )
163170def test_versions_job (nomad_setup ):
164171 assert "Versions" in nomad_setup .job .get_versions ("example" )
165172
166173
167- @pytest .mark .skipif (
168- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 6 , 0 ), reason = "Not supported in version"
169- )
170174def test_versions_job_missing (nomad_setup ):
171175 with pytest .raises (nomad .api .exceptions .URLNotFoundNomadException ):
172176 assert "Versions" in nomad_setup .job .get_versions ("example1" )
173177
174178
175- @pytest .mark .skipif (
176- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 6 , 0 ), reason = "Not supported in version"
177- )
178179def test_get_job_deployments (nomad_setup ):
179180 assert "JobID" in nomad_setup .job .get_deployments ("example" )[0 ]
180181 assert isinstance (nomad_setup .job .get_deployments ("example" ), list )
181182 assert isinstance (nomad_setup .job .get_deployments ("example" )[0 ], dict )
182183 assert "example" == nomad_setup .job .get_deployments ("example" )[0 ]["JobID" ]
183184
184185
185- @pytest .mark .skipif (
186- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 6 , 0 ), reason = "Not supported in version"
187- )
188186def test_get_job_deployment (nomad_setup ):
189187 assert "JobID" in nomad_setup .job .get_deployment ("example" )
190188 assert isinstance (nomad_setup .job .get_deployment ("example" ), dict )
191189 assert "example" == nomad_setup .job .get_deployment ("example" )["JobID" ]
192190
193191
194- @pytest .mark .skipif (
195- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 6 , 0 ), reason = "Not supported in version"
196- )
197192def test_get_summary (nomad_setup ):
198193 assert "JobID" in nomad_setup .job .get_summary ("example" )
199194 assert isinstance (nomad_setup .job .get_summary ("example" ), dict )
200195 assert "example" == nomad_setup .job .get_summary ("example" )["JobID" ]
201196
202197
203- @pytest .mark .skipif (
204- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 6 , 0 ), reason = "Not supported in version"
205- )
206198def test_revert_job (nomad_setup ):
207199 current_job_version = nomad_setup .job .get_deployment ("example" )["JobVersion" ]
208200 prior_job_version = current_job_version - 1
209201 nomad_setup .job .revert_job ("example" , prior_job_version , current_job_version )
210202
211203
212- @pytest .mark .skipif (
213- tuple (int (i ) for i in os .environ .get ("NOMAD_VERSION" ).split ("." )) < (0 , 6 , 0 ), reason = "Not supported in version"
214- )
215204def test_stable_job (nomad_setup ):
216205 current_job_version = nomad_setup .job .get_deployment ("example" )["JobVersion" ]
217206 nomad_setup .job .stable_job ("example" , current_job_version , True )
0 commit comments