Skip to content

Commit 932eb0e

Browse files
author
Taniya Mathur
committed
update test sets
1 parent 88402d9 commit 932eb0e

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed

src/lambda/test_set_resolver/index.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,10 +279,29 @@ def get_test_sets():
279279
logger.info(f"Registered direct upload test set {prefix} with status {status}")
280280

281281
# Check for deleted test sets (exist in DynamoDB but not in S3)
282+
# Only delete old FAILED test sets or any COMPLETED test sets
283+
from datetime import datetime, timedelta
284+
282285
deleted_test_sets = []
286+
cutoff_time = datetime.utcnow() - timedelta(hours=1) # Only delete FAILED if older than 1 hour
287+
283288
for test_set_id in existing_test_sets:
284-
# Check if S3 folder still exists
285-
if test_set_id not in s3_test_sets:
289+
test_set_item = existing_test_sets[test_set_id]
290+
test_set_status = test_set_item.get('status')
291+
created_at_str = test_set_item.get('createdAt', '')
292+
293+
# Parse creation time
294+
try:
295+
created_at = datetime.fromisoformat(created_at_str.replace('Z', '+00:00'))
296+
except:
297+
continue # Skip if can't parse date
298+
299+
# Only delete if S3 folder missing AND:
300+
# - Status is COMPLETED (any time), OR
301+
# - Status is FAILED and older than cutoff time
302+
if (test_set_id not in s3_test_sets and
303+
(test_set_status == 'COMPLETED' or
304+
(test_set_status == 'FAILED' and created_at < cutoff_time))):
286305
deleted_test_sets.append(test_set_id)
287306

288307
# Delete orphaned test sets from DynamoDB

src/ui/src/components/test-studio/TestSets.jsx

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,27 @@ const TestSets = () => {
5353
console.log('TestSets: Loading test sets...');
5454
const result = await client.graphql({ query: GET_TEST_SETS });
5555
console.log('TestSets: GraphQL result:', result);
56-
setTestSets(result.data.getTestSets || []);
56+
const backendTestSets = result.data.getTestSets || [];
57+
58+
// Upsert: merge backend data with existing UI state, deduplicating by id
59+
setTestSets((prevTestSets) => {
60+
const merged = [...prevTestSets];
61+
62+
backendTestSets.forEach((backendTestSet) => {
63+
const existingIndex = merged.findIndex((ts) => ts.id === backendTestSet.id);
64+
if (existingIndex >= 0) {
65+
// Update existing with fresh backend data
66+
merged[existingIndex] = backendTestSet;
67+
} else {
68+
// Add new test set from backend
69+
merged.push(backendTestSet);
70+
}
71+
});
72+
73+
// Keep active test sets even if missing from backend (during processing)
74+
const backendIds = new Set(backendTestSets.map((ts) => ts.id));
75+
return merged.filter((ts) => backendIds.has(ts.id) || (ts.status !== 'COMPLETED' && ts.status !== 'FAILED'));
76+
});
5777
} catch (err) {
5878
console.error('TestSets: Failed to load test sets:', err);
5979
setError(`Failed to load test sets: ${err.message || 'Unknown error'}`);
@@ -180,10 +200,8 @@ const TestSets = () => {
180200
console.log('New test set data:', newTestSet);
181201

182202
if (newTestSet) {
183-
const updatedTestSets = [...testSets, newTestSet];
184-
console.log('Updating testSets from', testSets.length, 'to', updatedTestSets.length);
185-
console.log('New test set added:', newTestSet);
186-
setTestSets(updatedTestSets);
203+
// Immediate UI update for responsive feedback
204+
setTestSets((prev) => [...prev, newTestSet]);
187205
setNewTestSetName('');
188206
setFilePattern('');
189207
setFileCount(0);
@@ -285,6 +303,8 @@ const TestSets = () => {
285303
createdAt: new Date().toISOString(),
286304
filePattern: null,
287305
};
306+
307+
// Immediate UI update for responsive feedback
288308
setTestSets((prev) => [...prev, newTestSet]);
289309

290310
setSuccessMessage(`Test set "${newTestSetName}" created successfully. Zip file is being processed.`);

0 commit comments

Comments
 (0)