@@ -1033,6 +1033,7 @@ void purgeInstanceId() throws TimeoutException {
1033
1033
}
1034
1034
1035
1035
@ RetryingTest
1036
+ @ Disabled ("Test is disabled as is not supported by the sidecar" )
1036
1037
void purgeInstanceFilter () throws TimeoutException {
1037
1038
final String orchestratorName = "PurgeInstance" ;
1038
1039
final String plusOne = "PlusOne" ;
@@ -1064,21 +1065,71 @@ void purgeInstanceFilter() throws TimeoutException {
1064
1065
1065
1066
DurableTaskClient client = new DurableTaskGrpcClientBuilder ().build ();
1066
1067
try (worker ; client ) {
1068
+ client .createTaskHub (true );
1069
+ Instant startTime = Instant .now ();
1067
1070
1068
1071
String instanceId = client .scheduleNewOrchestrationInstance (orchestratorName , 0 );
1069
1072
OrchestrationMetadata metadata = client .waitForInstanceCompletion (instanceId , defaultTimeout , true );
1070
1073
assertNotNull (metadata );
1071
1074
assertEquals (OrchestrationRuntimeStatus .COMPLETED , metadata .getRuntimeStatus ());
1072
1075
assertEquals (1 , metadata .readOutputAs (int .class ));
1073
1076
1077
+ // Test CreatedTimeFrom
1078
+ PurgeInstanceCriteria criteria = new PurgeInstanceCriteria ();
1079
+ criteria .setCreatedTimeFrom (startTime .minus (Duration .ofSeconds (1 )));
1074
1080
1075
- PurgeResult result = client .purgeInstance ( instanceId );
1081
+ PurgeResult result = client .purgeInstances ( criteria );
1076
1082
assertEquals (1 , result .getDeletedInstanceCount ());
1077
1083
metadata = client .getInstanceMetadata (instanceId , true );
1078
1084
assertFalse (metadata .isInstanceFound ());
1085
+
1086
+ // Test CreatedTimeTo
1087
+ criteria .setCreatedTimeTo (Instant .now ());
1088
+
1089
+ result = client .purgeInstances (criteria );
1090
+ assertEquals (0 , result .getDeletedInstanceCount ());
1091
+ metadata = client .getInstanceMetadata (instanceId , true );
1092
+ assertFalse (metadata .isInstanceFound ());
1093
+
1094
+ // Test CreatedTimeFrom, CreatedTimeTo, and RuntimeStatus
1095
+ String instanceId1 = client .scheduleNewOrchestrationInstance (plusOne , 0 );
1096
+ metadata = client .waitForInstanceCompletion (instanceId1 , defaultTimeout , true );
1097
+ assertNotNull (metadata );
1098
+ assertEquals (OrchestrationRuntimeStatus .COMPLETED , metadata .getRuntimeStatus ());
1099
+ assertEquals (1 , metadata .readOutputAs (int .class ));
1100
+
1101
+ String instanceId2 = client .scheduleNewOrchestrationInstance (plusTwo , 10 );
1102
+ metadata = client .waitForInstanceCompletion (instanceId2 , defaultTimeout , true );
1103
+ assertNotNull (metadata );
1104
+ assertEquals (OrchestrationRuntimeStatus .COMPLETED , metadata .getRuntimeStatus ());
1105
+ assertEquals (12 , metadata .readOutputAs (int .class ));
1106
+
1107
+ String instanceId3 = client .scheduleNewOrchestrationInstance (terminate );
1108
+ client .terminate (instanceId3 , terminate );
1109
+ metadata = client .waitForInstanceCompletion (instanceId3 , defaultTimeout , true );
1110
+ assertNotNull (metadata );
1111
+ assertEquals (OrchestrationRuntimeStatus .TERMINATED , metadata .getRuntimeStatus ());
1112
+ assertEquals (terminate , metadata .readOutputAs (String .class ));
1113
+
1114
+ HashSet <OrchestrationRuntimeStatus > runtimeStatusFilters = Stream .of (
1115
+ OrchestrationRuntimeStatus .TERMINATED ,
1116
+ OrchestrationRuntimeStatus .COMPLETED
1117
+ ).collect (Collectors .toCollection (HashSet ::new ));
1118
+
1119
+ criteria .setCreatedTimeTo (Instant .now ());
1120
+ criteria .setRuntimeStatusList (new ArrayList <>(runtimeStatusFilters ));
1121
+ result = client .purgeInstances (criteria );
1122
+
1123
+ assertEquals (3 , result .getDeletedInstanceCount ());
1124
+ metadata = client .getInstanceMetadata (instanceId1 , true );
1125
+ assertFalse (metadata .isInstanceFound ());
1126
+ metadata = client .getInstanceMetadata (instanceId2 , true );
1127
+ assertFalse (metadata .isInstanceFound ());
1128
+ metadata = client .getInstanceMetadata (instanceId3 , true );
1129
+ assertFalse (metadata .isInstanceFound ());
1079
1130
}
1080
1131
}
1081
-
1132
+
1082
1133
@ RetryingTest
1083
1134
void purgeInstanceFilterTimeout () throws TimeoutException {
1084
1135
final String orchestratorName = "PurgeInstance" ;
0 commit comments