Skip to content

Commit 1adb75c

Browse files
committed
CM-4553: Implemented test cases for CometApi.getExperiments().
1 parent 4983039 commit 1adb75c

File tree

3 files changed

+62
-11
lines changed

3 files changed

+62
-11
lines changed

comet-java-client/src/main/java/ml/comet/experiment/impl/CometApiImpl.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,8 @@ public List<ExperimentMetadata> getExperiments(@NonNull String workspaceName, @N
172172
public List<ExperimentMetadata> getExperiments(@NonNull String workspaceName) {
173173
return this.getAllProjects(workspaceName)
174174
.stream()
175-
.collect(ArrayList::new, (metadataList, project) -> this.getAllExperiments(project.getProjectId()),
176-
ArrayList::addAll);
175+
.map(project -> this.getAllExperiments(project.getProjectId()))
176+
.collect(ArrayList::new, ArrayList::addAll, ArrayList::addAll);
177177
}
178178

179179
@Override
@@ -191,15 +191,21 @@ public List<ExperimentMetadata> getExperiments(
191191
}
192192

193193
if (StringUtils.isBlank(experimentNamePattern)) {
194-
// no experiment name pattern provided
194+
// no experiment name pattern provided - all experiments under project
195195
return this.getExperiments(workspaceName, projectName);
196196
}
197197

198198
// return list of experiments with names matching provided regex
199+
Pattern p = Pattern.compile(experimentNamePattern);
199200
return this.getExperiments(workspaceName, projectName)
200201
.stream()
201-
.filter(experimentMetadata ->
202-
Pattern.matches(experimentNamePattern, experimentMetadata.getExperimentName()))
202+
.filter(experimentMetadata -> {
203+
if (StringUtils.isEmpty(experimentMetadata.getExperimentName())) {
204+
return false;
205+
} else {
206+
return p.matcher(experimentMetadata.getExperimentName()).matches();
207+
}
208+
})
203209
.collect(Collectors.toList());
204210
}
205211

comet-java-client/src/test/java/ml/comet/experiment/impl/CometApiTest.java

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.Map;
3838
import java.util.Objects;
3939
import java.util.Optional;
40+
import java.util.UUID;
4041
import java.util.concurrent.TimeUnit;
4142
import java.util.stream.Stream;
4243
import java.util.zip.ZipInputStream;
@@ -115,9 +116,47 @@ public void testGetsAllExperiments() {
115116

116117
List<ExperimentMetadata> experiments = experimentsOpt.get();
117118
assertFalse(experiments.isEmpty());
118-
boolean experimentExists = experiments.stream()
119-
.anyMatch(experiment -> SHARED_EXPERIMENT.getExperimentKey().equals(experiment.getExperimentKey()));
120-
assertTrue(experimentExists);
119+
assertExperimentInList(SHARED_EXPERIMENT.getExperimentKey(), experiments);
120+
}
121+
122+
@Test
123+
public void testGetExperiments_Workspace() {
124+
List<ExperimentMetadata> experiments = COMET_API.getExperiments(WORKSPACE_NAME);
125+
assertFalse(experiments.isEmpty());
126+
assertExperimentInList(SHARED_EXPERIMENT.getExperimentKey(), experiments);
127+
}
128+
129+
@Test
130+
public void testGetExperiments_Workspace_Project() {
131+
List<ExperimentMetadata> experiments = COMET_API.getExperiments(WORKSPACE_NAME, PROJECT_NAME);
132+
assertFalse(experiments.isEmpty());
133+
assertExperimentInList(SHARED_EXPERIMENT.getExperimentKey(), experiments);
134+
}
135+
136+
@Test
137+
public void testGetExperiments() throws Exception {
138+
String experimentName = UUID.randomUUID().toString();
139+
String experimentKey;
140+
try (OnlineExperiment experiment = createOnlineExperiment()) {
141+
experiment.setExperimentName(experimentName);
142+
experimentKey = experiment.getExperimentKey();
143+
144+
// wait for experiment name to be updated
145+
awaitForCondition(() -> experimentName.equals(experiment.getMetadata().getExperimentName()),
146+
"Experiment name update timeout");
147+
}
148+
149+
List<ExperimentMetadata> experiments = COMET_API.getExperiments(WORKSPACE_NAME, PROJECT_NAME, experimentName);
150+
assertEquals(1, experiments.size(), "one experiment expected");
151+
152+
ExperimentMetadata experimentMetadata = experiments.get(0);
153+
assertEquals(experimentKey, experimentMetadata.getExperimentKey());
154+
}
155+
156+
@Test
157+
public void testGetExperiments_emptyProject_with_experimentName() {
158+
assertThrows(IllegalArgumentException.class, () ->
159+
COMET_API.getExperiments(WORKSPACE_NAME, null, "someExperiment*."));
121160
}
122161

123162
@Test
@@ -638,7 +677,7 @@ public void testDeleteRegistryModelVersion_model_doesnt_exists() {
638677
// try to delete version of not existing model
639678
//
640679
String modelName = "not existing model";
641-
assertThrows(CometApiException.class, ()->
680+
assertThrows(CometApiException.class, () ->
642681
COMET_API.deleteRegistryModelVersion(modelName, SHARED_EXPERIMENT.getWorkspaceName(),
643682
DEFAULT_MODEL_VERSION));
644683
}
@@ -653,7 +692,7 @@ public void testDeleteRegistryModelVersion_version_doesnt_exists() {
653692

654693
// try to delete not existing version of the model
655694
//
656-
assertThrows(ModelVersionNotFoundException.class, ()->
695+
assertThrows(ModelVersionNotFoundException.class, () ->
657696
COMET_API.deleteRegistryModelVersion(modelName, SHARED_EXPERIMENT.getWorkspaceName(),
658697
"1.0.1"));
659698
}
@@ -752,4 +791,10 @@ private static void logModelFolder(String modelName) {
752791
awaitForCondition(() -> !SHARED_EXPERIMENT.getAssetList(MODEL_ELEMENT.type()).isEmpty(),
753792
"Failed to get logged model file");
754793
}
794+
795+
private static void assertExperimentInList(String experimentKey, List<ExperimentMetadata> experiments) {
796+
boolean experimentExists = experiments.stream()
797+
.anyMatch(experiment -> experimentKey.equals(experiment.getExperimentKey()));
798+
assertTrue(experimentExists);
799+
}
755800
}

comet-java-client/src/test/java/ml/comet/experiment/impl/OnlineExperimentTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void testSetAndGetExperimentName() throws Exception {
133133

134134
ExperimentMetadata metadata = experiment.getMetadata();
135135
String generatedExperimentName = metadata.getExperimentName();
136-
assertTrue(StringUtils.isNoneEmpty(generatedExperimentName));
136+
assertTrue(StringUtils.isNotEmpty(generatedExperimentName));
137137

138138
experiment.setExperimentName(SOME_NAME);
139139

0 commit comments

Comments
 (0)