Skip to content

Commit 6629f25

Browse files
authored
Merge pull request #23 from actionml/feature/user-data-test
Added user-data test
2 parents c81a654 + 1aaf1d0 commit 6629f25

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

examples/ur/simple-integration-test.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ else
121121
diff ${actual_query_results} ${expected_test_results} > ${diffs_and_errors_file}
122122
cat ${actual_query_results} | grep "error" >> ${diffs_and_errors_file_property_changes}
123123

124+
echo "Running Phase 3: User data"
125+
python3 examples/ur/user-data.py --url ${host_url} --engineId test_ur --entityId u1 --compare-with ${user_events} >> ${diffs_and_errors_file_property_changes}
126+
echo
127+
124128
if [ -s ${diffs_and_errors_file_property_changes} ]
125129
then
126130
echo "Input, train, query tests pass but realtime model updates test fails"

examples/ur/user-data.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import urllib.request
2+
import json
3+
import argparse
4+
import csv
5+
import sys
6+
7+
8+
def get_entity_data(url, engineId, entityId, offset, limit):
9+
with urllib.request.urlopen(f"{url}/engines/{engineId}/entities/{entityId}?from={offset}&num={limit}") as b:
10+
return json.loads(b.read().decode('utf-8'))
11+
12+
def parseCsv(file):
13+
with open(file) as csvfile:
14+
reader = csv.DictReader(csvfile, fieldnames=['entityId', 'event', 'targetEntityId'])
15+
result = []
16+
for row in reader:
17+
if row['event'] != "$set":
18+
for j in row.items():
19+
result.append({'entityId': j[1]})
20+
break
21+
return result
22+
23+
def filterByEntityId(entities, id):
24+
result = []
25+
for i in entities:
26+
if i['entityId'] == id:
27+
result.append(i)
28+
return result
29+
30+
def compareEntities(actual, expected):
31+
return len(actual) == len(expected)
32+
33+
def deleteEntities(url, engineId, entityId):
34+
req = urllib.request.Request(f"{url}/engines/{engineId}/entities/{entityId}", method="DELETE")
35+
with urllib.request.urlopen(req) as b:
36+
return
37+
38+
39+
if __name__ == '__main__':
40+
parser = argparse.ArgumentParser()
41+
parser.add_argument('--url', default="http://localhost:9090")
42+
parser.add_argument('--engineId')
43+
parser.add_argument('--entityId')
44+
parser.add_argument('--offset', default=0)
45+
parser.add_argument('--limit', default=1000)
46+
parser.add_argument('--compare-with')
47+
48+
args = parser.parse_args()
49+
getPassed = compareEntities(get_entity_data(args.url, args.engineId, args.entityId, args.offset, args.limit),
50+
filterByEntityId(parseCsv(args.compare_with), args.entityId))
51+
deleteEntities(args.url, args.engineId, args.entityId)
52+
deletePassed = compareEntities(get_entity_data(args.url, args.engineId, args.entityId, args.offset, args.limit), [])
53+
54+
if not getPassed or not deletePassed:
55+
print("User data tests fail.")

0 commit comments

Comments
 (0)