@@ -2,6 +2,12 @@ import { describe, test, expect, beforeAll, afterAll } from '@jest/globals';
22import { ApiError } from '../src/utils/apiError' ;
33import ExperimentClient from '../src/tracking/ExperimentClient' ;
44import ExperimentManager from '../src/workflows/ExperimentManager' ;
5+ import {
6+ createTestExperiment ,
7+ deleteTestExperiments ,
8+ runProperties ,
9+ TRACKING_SERVER_URI ,
10+ } from './testUtils' ;
511
612describe ( 'ExperimentManager' , ( ) => {
713 let experimentClient : ExperimentClient ;
@@ -45,17 +51,14 @@ describe('ExperimentManager', () => {
4551 beforeAll ( async ( ) => {
4652 // Add a small delay to ensure MLflow is fully ready
4753 await new Promise ( ( resolve ) => setTimeout ( resolve , 2000 ) ) ;
48- experimentClient = new ExperimentClient ( 'http://127.0.0.1:5002' ) ;
49- experimentManager = new ExperimentManager ( 'http://127.0.0.1:5002' ) ;
54+ experimentClient = new ExperimentClient ( TRACKING_SERVER_URI ) ;
55+ experimentManager = new ExperimentManager ( TRACKING_SERVER_URI ) ;
5056 } ) ;
5157
5258 describe ( 'runExistingExperiment' , ( ) => {
5359 test ( 'should run an existing experiment and return the run object' , async ( ) => {
54- const num = Math . random ( ) . toString ( ) . slice ( 2 , 11 ) ;
55- const name = `Test experiment ${ num } ` ;
56- const exp = await experimentClient . createExperiment ( name ) ;
60+ const exp : string = await createTestExperiment ( ) ;
5761 testIds . push ( exp ) ;
58-
5962 const run = await experimentManager . runExistingExperiment (
6063 exp ,
6164 undefined ,
@@ -64,24 +67,14 @@ describe('ExperimentManager', () => {
6467 tags ,
6568 model
6669 ) ;
67-
68- expect ( run ) . toHaveProperty ( 'run_id' ) ;
69- expect ( run ) . toHaveProperty ( 'run_uuid' ) ;
70- expect ( run ) . toHaveProperty ( 'run_name' ) ;
71- expect ( run ) . toHaveProperty ( 'experiment_id' ) ;
72- expect ( run ) . toHaveProperty ( 'user_id' ) ;
73- expect ( run ) . toHaveProperty ( 'status' ) ;
74- expect ( run ) . toHaveProperty ( 'start_time' ) ;
75- expect ( run ) . toHaveProperty ( 'artifact_uri' ) ;
76- expect ( run ) . toHaveProperty ( 'lifecycle_stage' ) ;
70+ for ( const property of runProperties ) {
71+ expect ( run ) . toHaveProperty ( property ) ;
72+ }
7773 } ) ;
7874
7975 test ( 'should throw error if an invalid experiment ID is passed in' , async ( ) => {
80- const num = Math . random ( ) . toString ( ) . slice ( 2 , 11 ) ;
81- const name = `Test experiment ${ num } ` ;
82- const exp = await experimentClient . createExperiment ( name ) ;
76+ const exp : string = await createTestExperiment ( ) ;
8377 testIds . push ( exp ) ;
84-
8578 await expect (
8679 experimentManager . runExistingExperiment (
8780 'invalidExperimentId' ,
@@ -97,8 +90,7 @@ describe('ExperimentManager', () => {
9790
9891 describe ( 'runNewExperiment' , ( ) => {
9992 test ( 'should run a new experiment and return the run object' , async ( ) => {
100- const num = Math . random ( ) . toString ( ) . slice ( 2 , 11 ) ;
101- const name = `Test experiment ${ num } ` ;
93+ const name : string = `Test experiment ${ Date . now ( ) } ` ;
10294 const run : {
10395 experiment_id ?: string ;
10496 } = await experimentManager . runNewExperiment (
@@ -112,22 +104,14 @@ describe('ExperimentManager', () => {
112104 if ( run . experiment_id ) {
113105 testIds . push ( run . experiment_id ) ;
114106 }
115-
116- expect ( run ) . toHaveProperty ( 'run_id' ) ;
117- expect ( run ) . toHaveProperty ( 'run_uuid' ) ;
118- expect ( run ) . toHaveProperty ( 'run_name' ) ;
119- expect ( run ) . toHaveProperty ( 'experiment_id' ) ;
120- expect ( run ) . toHaveProperty ( 'user_id' ) ;
121- expect ( run ) . toHaveProperty ( 'status' ) ;
122- expect ( run ) . toHaveProperty ( 'start_time' ) ;
123- expect ( run ) . toHaveProperty ( 'artifact_uri' ) ;
124- expect ( run ) . toHaveProperty ( 'lifecycle_stage' ) ;
107+ for ( const property of runProperties ) {
108+ expect ( run ) . toHaveProperty ( property ) ;
109+ }
125110 } ) ;
126111
127112 test ( 'should throw error if an invalid experiment name is passed in' , async ( ) => {
128- const num = Math . random ( ) . toString ( ) . slice ( 2 , 11 ) ;
129- const name = `Test experiment ${ num } ` ;
130- const exp = await experimentClient . createExperiment ( name ) ;
113+ const name : string = `Test experiment ${ Date . now ( ) } ` ;
114+ const exp : string = await experimentClient . createExperiment ( name ) ;
131115 testIds . push ( exp ) ;
132116 await expect (
133117 experimentManager . runNewExperiment (
@@ -144,9 +128,7 @@ describe('ExperimentManager', () => {
144128
145129 describe ( 'experimentSummary' , ( ) => {
146130 test ( "should return an array of all the passed-in experiment's runs, sorted according to the passed-in metric" , async ( ) => {
147- const num = Math . random ( ) . toString ( ) . slice ( 2 , 11 ) ;
148- const name = `Test experiment ${ num } ` ;
149- const exp = await experimentClient . createExperiment ( name ) ;
131+ const exp : string = await createTestExperiment ( ) ;
150132 testIds . push ( exp ) ;
151133 for ( const metric of metricsAll ) {
152134 await experimentManager . runExistingExperiment (
@@ -176,12 +158,5 @@ describe('ExperimentManager', () => {
176158 } ) ;
177159 } ) ;
178160
179- afterAll ( async ( ) => {
180- while ( testIds . length > 0 ) {
181- const id = testIds . pop ( ) ;
182- if ( id ) {
183- await experimentClient . deleteExperiment ( id ) ;
184- }
185- }
186- } ) ;
161+ afterAll ( async ( ) => await deleteTestExperiments ( testIds ) ) ;
187162} ) ;
0 commit comments