Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,12 @@ jobs:
compile aggregation-query-test-iceberg-package.json
compile aggregation-query-subscription-test-package.json

- example: canary-mutation
path: test-jobs/mutation-tests
tag: canary
test_commands: |
compile mutation-test-package.json

- example: canary-failures
path: test-jobs/failure-tests
tag: canary
Expand Down
18 changes: 18 additions & 0 deletions test-jobs/mutation-tests/mutation-test-package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"version": "1",
"enabled-engines": ["vertx", "postgres", "kafka", "flink"],
"script": {
"main": "sensors.sqrl"
},
"engines": {
"flink" : {
"config" : {
"table.exec.source.idle-timeout": "5s"
}
}
},
"test-runner": {
"delay-sec": 30,
"mutation-delay-sec": 1
}
}
29 changes: 29 additions & 0 deletions test-jobs/mutation-tests/sensors.sqrl
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*+ engine(kafka) */
CREATE TABLE SensorReading (
sensor_id INT NOT NULL,
temperature FLOAT NOT NULL,
placement STRING NOT NULL,
event_time TIMESTAMP_LTZ(3) NOT NULL METADATA FROM 'timestamp'
) PARTITIONED BY (placement);

/*+ engine(kafka) */
CREATE TABLE SensorUpdate (
sensor_id INT NOT NULL,
sensor_name STRING NOT NULL,
last_updated TIMESTAMP_LTZ(3) NOT NULL METADATA FROM 'timestamp',
PRIMARY KEY (sensor_id) NOT ENFORCED
);

EXPORT SensorReading TO print.SensorReading;
EXPORT SensorUpdate TO print.SensorUpdate;

EnrichedReading := SELECT r.*, u.sensor_name
FROM SensorReading r
LEFT JOIN SensorUpdate FOR SYSTEM_TIME AS OF r.event_time u
ON r.sensor_id = u.sensor_id
ORDER BY r.event_time ASC;

EnrichedReadingByPlacement(placement STRING NOT NULL) :=
SELECT * FROM EnrichedReading WHERE placement = :placement;

EXPORT EnrichedReading TO print.EnrichedReading;
16 changes: 16 additions & 0 deletions test-jobs/mutation-tests/snapshots/Mutation_1_AddUpdates.snapshot
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"data" : {
"update1" : {
"sensor_id" : 101,
"sensor_name" : "Living Room Sensor"
},
"update2" : {
"sensor_id" : 111,
"sensor_name" : "Dining Room Sensor"
},
"update3" : {
"sensor_id" : 121,
"sensor_name" : "Bathroom Room Sensor"
}
}
}
19 changes: 19 additions & 0 deletions test-jobs/mutation-tests/snapshots/Mutation_2_AddReadings.snapshot
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"data" : {
"add1" : {
"sensor_id" : 101,
"temperature" : 23.5,
"placement" : "DOWNSTAIRS"
},
"add2" : {
"sensor_id" : 101,
"temperature" : 33.5,
"placement" : "DOWNSTAIRS"
},
"add3" : {
"sensor_id" : 111,
"temperature" : 13.5,
"placement" : "UPSTAIRS"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"data" : {
"EnrichedReadingByPlacement" : [ {
"sensor_id" : 101,
"temperature" : 23.5,
"placement" : "DOWNSTAIRS",
"sensor_name" : "Living Room Sensor"
}, {
"sensor_id" : 101,
"temperature" : 33.5,
"placement" : "DOWNSTAIRS",
"sensor_name" : "Living Room Sensor"
} ]
}
}
20 changes: 20 additions & 0 deletions test-jobs/mutation-tests/snapshots/Query_EnrichedReadings.snapshot
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"data" : {
"EnrichedReading" : [ {
"sensor_id" : 101,
"temperature" : 23.5,
"placement" : "DOWNSTAIRS",
"sensor_name" : "Living Room Sensor"
}, {
"sensor_id" : 101,
"temperature" : 33.5,
"placement" : "DOWNSTAIRS",
"sensor_name" : "Living Room Sensor"
}, {
"sensor_id" : 111,
"temperature" : 13.5,
"placement" : "UPSTAIRS",
"sensor_name" : "Dining Room Sensor"
} ]
}
}
23 changes: 23 additions & 0 deletions test-jobs/mutation-tests/tests/Mutation_1_AddUpdates.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
mutation SensorUpdates {
update1: SensorUpdate(event: {
sensor_id: 101,
sensor_name: "Living Room Sensor"
}) {
sensor_id
sensor_name
}
update2: SensorUpdate(event: {
sensor_id: 111,
sensor_name: "Dining Room Sensor"
}) {
sensor_id
sensor_name
}
update3: SensorUpdate(event: {
sensor_id: 121,
sensor_name: "Bathroom Room Sensor"
}) {
sensor_id
sensor_name
}
}
29 changes: 29 additions & 0 deletions test-jobs/mutation-tests/tests/Mutation_2_AddReadings.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
mutation SensorReadings {
add1: SensorReading(event: {
sensor_id: 101,
temperature: 23.5,
placement: "DOWNSTAIRS"
}) {
sensor_id
temperature
placement
}
add2: SensorReading(event: {
sensor_id: 101,
temperature: 33.5
placement: "DOWNSTAIRS"
}) {
sensor_id
temperature
placement
}
add3: SensorReading(event: {
sensor_id: 111,
temperature: 13.5
placement: "UPSTAIRS"
}) {
sensor_id
temperature
placement
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
query GetEnrichedReadingByPlacement {
EnrichedReadingByPlacement(placement: "DOWNSTAIRS", limit: 10, offset: 0) {
sensor_id
temperature
placement
sensor_name
}
}
8 changes: 8 additions & 0 deletions test-jobs/mutation-tests/tests/Query_EnrichedReadings.graphql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
query GetEnrichedReadings {
EnrichedReading(limit: 10, offset: 0) {
sensor_id
temperature
placement
sensor_name
}
}
Loading