Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update/v7.1.33 #58

Open
wants to merge 280 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
280 commits
Select commit Hold shift + click to select a range
fbe1f8a
Update CHANGELOG.md for v7.1.2
rowanseymour Nov 17, 2021
9db7ece
Merge branch 'main' into incidents
rowanseymour Nov 17, 2021
e36dd9b
More tests
rowanseymour Nov 18, 2021
1136f73
Add logging to msg retry task
rowanseymour Nov 18, 2021
523daa7
Update CHANGELOG.md for v7.1.3
rowanseymour Nov 18, 2021
b6c358f
Remove unneeded check for RP's celery task to retry messages
rowanseymour Nov 18, 2021
2eb0e6c
Add util class to track bool results over a recent time period
rowanseymour Nov 18, 2021
5bd9a9f
Generalize to a states tracker and test on redis 3.2.4
rowanseymour Nov 19, 2021
28b6be1
Replace ZPOPMAX with ZRANGE to be compatible with Redis 3.2.x
rowanseymour Nov 19, 2021
5f6f7bc
Test with Redis 3.2.4
rowanseymour Nov 19, 2021
ccf036f
Merge branch 'redis3' into tracker
rowanseymour Nov 19, 2021
4749a4c
Merge pull request #528 from nyaruka/redis3
rowanseymour Nov 19, 2021
7c949d7
Merge branch 'main' into tracker
rowanseymour Nov 19, 2021
46c5476
Better tests
rowanseymour Nov 19, 2021
5600933
Implement scaling of last interval in the window for more accurate ap…
rowanseymour Nov 19, 2021
00d05fe
Merge pull request #527 from nyaruka/tracker
rowanseymour Nov 19, 2021
087f093
Rework marker code to be more reusable
rowanseymour Nov 19, 2021
8512199
Merge pull request #529 from nyaruka/marker
rowanseymour Nov 19, 2021
d958632
Merge branch 'main' into incidents
rowanseymour Nov 19, 2021
3312ac7
Use tracker to track healthy and unhealthy webhook calls
rowanseymour Nov 19, 2021
3106aca
Rework locker code for reusablity
rowanseymour Nov 19, 2021
0dc3d04
Merge pull request #530 from nyaruka/locks
rowanseymour Nov 22, 2021
62c197c
Update CHANGELOG.md for v7.1.4
rowanseymour Nov 22, 2021
fec9cfc
Merge branch 'main' into incidents
rowanseymour Nov 22, 2021
2a38c9d
Pin to go 1.17.2
rowanseymour Nov 23, 2021
00e7264
Update CHANGELOG.md for v7.1.5
rowanseymour Nov 23, 2021
e7429b6
WIP
rowanseymour Nov 23, 2021
1a2a885
Revert "Rework locker code for reusablity"
rowanseymour Nov 24, 2021
df3c3dc
Update CHANGELOG.md for v7.1.6
rowanseymour Nov 24, 2021
36acccc
Rename stats module to analytics
rowanseymour Nov 24, 2021
8c9be21
Add test for runner.StartFlow concurrency and improve testing of redi…
rowanseymour Nov 24, 2021
803a456
Merge pull request #531 from nyaruka/concurrency
rowanseymour Nov 25, 2021
d7653eb
Merge branch 'main' into incidents
rowanseymour Nov 25, 2021
6c466dd
Re-add new locker code but this time don't let locking code hold redi…
rowanseymour Nov 25, 2021
bbb8424
Merge pull request #532 from nyaruka/nicer_locking_take_2
rowanseymour Nov 25, 2021
a07798a
Merge branch 'main' into incidents
rowanseymour Nov 25, 2021
764a706
Add cron job to end webhook incidents when nodes are no longer unhealthy
rowanseymour Nov 25, 2021
a49921b
Fix handling of add label actions after msg resumes in IVR flows
rowanseymour Nov 29, 2021
0429d16
Merge pull request #534 from nyaruka/ivr_fix
rowanseymour Nov 29, 2021
66c367c
Merge pull request #525 from nyaruka/incidents
rowanseymour Nov 29, 2021
7f937bb
Update CHANGELOG.md for v7.1.7
rowanseymour Nov 29, 2021
c819c4b
Update sessions and runs in batches when exiting
rowanseymour Nov 29, 2021
5e5c744
Merge pull request #535 from nyaruka/interrupt_in_batches
rowanseymour Nov 29, 2021
4df0392
Move chunkSessionIDs to utils.go
rowanseymour Nov 29, 2021
3a61991
Update CHANGELOG.md for v7.1.8
rowanseymour Nov 29, 2021
e24ef3b
Add logging for ending webhook incidents
rowanseymour Dec 1, 2021
f1ba896
Don't include response_to_id in courier payloads
rowanseymour Dec 1, 2021
82844df
Update CHANGELOG.md for v7.1.9
rowanseymour Dec 1, 2021
c25c6ee
Fix test
rowanseymour Dec 1, 2021
35575e2
Add redisx.Cacher util
rowanseymour Dec 1, 2021
12767f9
Merge pull request #536 from nyaruka/cacher
rowanseymour Dec 1, 2021
bb5d5df
Update CHANGELOG.md for v7.1.10
rowanseymour Dec 1, 2021
34f72a8
Move msg level loop detection from courier
rowanseymour Dec 1, 2021
74f1c83
Add imports for missing task packages
rowanseymour Dec 2, 2021
809707a
Update CHANGELOG.md for v7.1.11
rowanseymour Dec 2, 2021
8a97e33
Merge pull request #537 from nyaruka/loop_detection
rowanseymour Dec 2, 2021
00b902a
Rework how we create outgoing messages, and fix retries of high prior…
rowanseymour Dec 2, 2021
f1d2a0b
Update CHANGELOG.md for v7.1.12
rowanseymour Dec 2, 2021
00f8301
Add support for non-24 hour based markers and cachers
rowanseymour Dec 2, 2021
cba3b5d
Remove unused BoolTracker type
rowanseymour Dec 2, 2021
1cfbcae
Correct use of KEYS vs ARGV
rowanseymour Dec 3, 2021
1aebb71
Add redisx.Series type to replace Tracker
rowanseymour Dec 3, 2021
e02f4a6
Change NewLocker so that it takes full key
rowanseymour Dec 3, 2021
343d8e9
Add redisx readme and rename cacher to cache
rowanseymour Dec 3, 2021
343a018
Make Cache use dynamic number of intervals
rowanseymour Dec 3, 2021
d557908
Update redis asserts and add redisx.Cache
rowanseymour Dec 3, 2021
83c6589
Add redisx.Series to replace Tracker
rowanseymour Dec 3, 2021
1d1b48c
Merge branch 'main' into redisx_2
rowanseymour Dec 3, 2021
46e607d
Add redisx.Series to replace Tracker
rowanseymour Dec 3, 2021
f3d9f8b
Merge branch 'main' into redisx_2
rowanseymour Dec 3, 2021
ef4a604
redisx.NewLocker should take full key name
rowanseymour Dec 3, 2021
69c930b
Correct use of KEYS vs ARGV in redisx.Locker scripts
rowanseymour Dec 3, 2021
8c7df89
Merge branch 'main' into redisx_2
rowanseymour Dec 3, 2021
8b1048d
Add redisx/README
rowanseymour Dec 3, 2021
2afbf50
Merge branch 'main' into redisx_2
rowanseymour Dec 3, 2021
d1311f0
Merge branch 'main' into rework_create_outgoing
rowanseymour Dec 3, 2021
0d33ff7
Replace trackers with series to determine unhealthy webhooks
rowanseymour Dec 3, 2021
9933139
Merge pull request #538 from nyaruka/rework_create_outgoing
rowanseymour Dec 3, 2021
aa9939b
Merge branch 'main' into webhooks_by_series
rowanseymour Dec 3, 2021
92268ac
Remove Msg.response_to
rowanseymour Dec 3, 2021
3ea86ff
Remove msg connection field
rowanseymour Dec 3, 2021
d6634fc
Merge pull request #542 from nyaruka/webhooks_by_series
rowanseymour Dec 6, 2021
3dfed77
Update CHANGELOG.md for v7.1.13
rowanseymour Dec 6, 2021
52d8280
Simplify cron functions by not passing lock name and value which aren…
rowanseymour Dec 6, 2021
cda628d
Add failed_reason to Msg
rowanseymour Dec 6, 2021
5dc2953
Merge branch 'main' into remove_response_to
rowanseymour Dec 6, 2021
50c8559
Remove response_to from msg queries
rowanseymour Dec 6, 2021
6e1ff72
Merge pull request #544 from nyaruka/simplify_crons
rowanseymour Dec 6, 2021
284674f
Merge branch 'main' into remove_msg_connection
rowanseymour Dec 6, 2021
304e9c3
Fix SQL broken by removing msg.connection_id
rowanseymour Dec 6, 2021
8d4690d
Merge pull request #543 from nyaruka/remove_response_to
rowanseymour Dec 6, 2021
d987e41
Merge branch 'main' into failed_reason
rowanseymour Dec 6, 2021
d4d9ab8
Merge pull request #545 from nyaruka/failed_reason
rowanseymour Dec 6, 2021
7bcad9b
Merge branch 'main' into remove_msg_connection
rowanseymour Dec 6, 2021
e6ca2e2
Fix test
rowanseymour Dec 6, 2021
705e1b6
Merge pull request #546 from nyaruka/remove_msg_connection
rowanseymour Dec 7, 2021
f722020
Update to latest goflow
rowanseymour Dec 7, 2021
f0f2f8c
WIP
rowanseymour Dec 8, 2021
bd0019b
Merge branch 'main' into redisx_2
rowanseymour Dec 8, 2021
b63308b
Update CHANGELOG.md for v7.1.14
rowanseymour Dec 8, 2021
f78fa00
Merge pull request #541 from nyaruka/redisx_2
rowanseymour Dec 8, 2021
bac4370
Update goflow
rowanseymour Dec 8, 2021
9cb2f4f
Update CHANGELOG.md for v7.1.15
rowanseymour Dec 8, 2021
c7ce617
Merge branch 'main' into flow_stats
rowanseymour Dec 8, 2021
efa21a0
WIP
rowanseymour Dec 8, 2021
6ba7cad
Update goflow
rowanseymour Dec 9, 2021
1167275
Merge branch 'main' into flow_stats
rowanseymour Dec 9, 2021
695cb27
Rename redisx structs and remove legacy support from IntervalSet
rowanseymour Dec 9, 2021
6cdde54
Add redisx.CappedZSet
rowanseymour Dec 9, 2021
c7d4964
Merge pull request #548 from nyaruka/redisx_3
rowanseymour Dec 9, 2021
a9392ad
Merge branch 'main' into flow_stats
rowanseymour Dec 9, 2021
306602f
Record recent operands in a capped zset for wait_for_response and spl…
rowanseymour Dec 9, 2021
c5546a1
Update goflow
rowanseymour Dec 9, 2021
87dd6b2
Merge branch 'main' into flow_stats
rowanseymour Dec 9, 2021
dd11a30
Add tests for recording recent operands
rowanseymour Dec 9, 2021
9fd6f9f
Change recent operands expire time to 48 hours
rowanseymour Dec 9, 2021
43f55c3
Update .gitignore to include deploy/
rowanseymour Dec 10, 2021
beb9f60
Merge branch 'main' into flow_stats
rowanseymour Dec 10, 2021
ff52840
Use floating point second timestamps for recent operand scores
rowanseymour Dec 13, 2021
04dca71
Switch to redisx.Locker for cron job locking
rowanseymour Dec 13, 2021
04eb6b0
Write failed messages when missing channel or URNs
norkans7 Dec 13, 2021
edb52cb
Use failed destination as common reason for missing channel or URN
norkans7 Dec 13, 2021
5edc7c9
Fix test
norkans7 Dec 13, 2021
8f87630
Allow cron jobs to declare that they can run on all instances at same…
rowanseymour Dec 13, 2021
52bf3aa
Merge pull request #550 from nyaruka/use_locker_for_crons
rowanseymour Dec 13, 2021
4439175
Merge branch 'main' into flow_stats
rowanseymour Dec 13, 2021
dc9990e
Record recent contacts for all segments
rowanseymour Dec 13, 2021
177cfc3
Keep recent contacts for 24 hours
rowanseymour Dec 14, 2021
6ad9de1
Merge pull request #549 from nyaruka/flow_stats
rowanseymour Dec 14, 2021
dc66bfc
Merge pull request #551 from nyaruka/write_failed_msgs
rowanseymour Dec 14, 2021
3d08036
Tweaks after prev merge
rowanseymour Dec 14, 2021
bcf572f
Update CHANGELOG.md for v7.1.16
rowanseymour Dec 14, 2021
71cb5d5
Include segments in simulation responses
rowanseymour Dec 14, 2021
5886655
Merge pull request #552 from nyaruka/simulation_segments
rowanseymour Dec 14, 2021
54fb948
Update CHANGELOG.md for v7.1.17
rowanseymour Dec 14, 2021
55c215e
CI with go 1.17.5
rowanseymour Dec 14, 2021
d90c863
Fix not logging details of query errors
rowanseymour Dec 15, 2021
4c52b07
Update CHANGELOG.md for v7.1.18
rowanseymour Dec 15, 2021
693e31a
Move session storage mode to the runtime.Config instead of an org con…
rowanseymour Dec 15, 2021
6254908
Update goflow
rowanseymour Dec 16, 2021
6feaff9
Update to latest goflow
rowanseymour Dec 16, 2021
0ffc72e
Update CHANGELOG.md for v7.1.19
rowanseymour Dec 16, 2021
9369664
Merge branch 'main' into session_storage_config
rowanseymour Dec 16, 2021
65e6885
Fix test
rowanseymour Dec 16, 2021
ef60e6b
Update to latest gocommon and goflow to get fix for random.IntN concu…
rowanseymour Dec 17, 2021
a07f7aa
Update CHANGELOG.md for v7.1.20
rowanseymour Dec 17, 2021
e48ca48
Update to latest gocommon to get instagram scheme
rowanseymour Dec 17, 2021
a9564d0
Update CHANGELOG.md for v7.1.21
rowanseymour Dec 17, 2021
ac09475
Update test database to use big ids for flow run and session ids
rowanseymour Dec 20, 2021
a83ce08
Remove checks on flowrun.parent_id in tests
rowanseymour Dec 20, 2021
2b18053
Replace redisx package with new dependency
rowanseymour Dec 23, 2021
3ee6b51
Merge pull request #556 from nyaruka/redisx
rowanseymour Dec 23, 2021
812305e
Merge pull request #554 from nyaruka/big_ids
rowanseymour Dec 27, 2021
6b2b1a4
Merge pull request #553 from nyaruka/session_storage_config
rowanseymour Jan 3, 2022
350a83a
Update CHANGELOG.md for v7.1.22
rowanseymour Jan 3, 2022
ff573d4
Clamp flow expiration values to valid ranges when loading flows
rowanseymour Jan 4, 2022
7a607b4
Better tests
rowanseymour Jan 4, 2022
b4bae0a
Merge pull request #557 from nyaruka/valid_expires
rowanseymour Jan 4, 2022
eca63c0
Update to latest goflow which removes activated waits
rowanseymour Jan 5, 2022
2e56dc9
Add testing for dial_wait events
rowanseymour Jan 5, 2022
575b065
Merge pull request #558 from nyaruka/latest_goflow
rowanseymour Jan 5, 2022
a83581a
Start writing FlowSession.wait_expires_on
rowanseymour Jan 5, 2022
a4ac641
Correctly set ended_on on session objects and add tests
rowanseymour Jan 5, 2022
a594748
Merge pull request #560 from nyaruka/session_tweaks
rowanseymour Jan 5, 2022
9093e04
Merge branch 'main' into wait_expires_db
rowanseymour Jan 5, 2022
7473886
Session.CurrentFlowID whould be cleared when session exits
rowanseymour Jan 5, 2022
72c3922
Test sessions in database match model
rowanseymour Jan 5, 2022
7de42b8
Merge pull request #559 from nyaruka/wait_expires_db
rowanseymour Jan 6, 2022
21d2e85
Update CHANGELOG.md for v7.1.23
rowanseymour Jan 6, 2022
37bcd72
Fix intermittent test failure
rowanseymour Jan 6, 2022
e804e16
Stop writing events on flow runs
rowanseymour Jan 6, 2022
5c82827
Really fix intermittent test failure
rowanseymour Jan 6, 2022
7d0a187
Merge branch 'main' into no_run_events
rowanseymour Jan 6, 2022
bee368b
Fix tests
rowanseymour Jan 6, 2022
eb2abdd
Always exclude router arguments from PO file extraction
rowanseymour Jan 6, 2022
a95f9b3
Switch to dbutil package in gocommon
rowanseymour Jan 7, 2022
5f3b524
Merge pull request #562 from nyaruka/no_args_in_pos
rowanseymour Jan 7, 2022
df38679
Merge branch 'main' into dbutil
rowanseymour Jan 7, 2022
a654e95
Merge pull request #563 from nyaruka/dbutil
rowanseymour Jan 7, 2022
34bbe3b
Merge branch 'main' into no_run_events
rowanseymour Jan 7, 2022
b036128
Update to latest goflow and use consistent var name for OrgAssets
rowanseymour Jan 7, 2022
d886c1d
Merge branch 'main' into no_run_events
rowanseymour Jan 7, 2022
b3a73ae
Update to latest gocommon
rowanseymour Jan 10, 2022
2d7c657
Update CHANGELOG.md for v7.1.24
rowanseymour Jan 10, 2022
511062f
Merge pull request #561 from nyaruka/no_run_events
rowanseymour Jan 11, 2022
d3aea71
Update to latest gocommon
rowanseymour Jan 11, 2022
cf7c67a
Update CHANGELOG.md for v7.1.25
rowanseymour Jan 11, 2022
092955f
Simplify how we queue event fire tasks and improve logging
rowanseymour Jan 12, 2022
be9a11b
Replace broken redigo dep version and anything that was depending on it
rowanseymour Jan 12, 2022
1835d4a
Merge pull request #564 from nyaruka/redigo_version
rowanseymour Jan 12, 2022
2680c78
Merge branch 'main' into simpler_fires
rowanseymour Jan 12, 2022
319a2fc
Use models.FireID consistently and add better tests
rowanseymour Jan 12, 2022
35d6048
Add testdata functions for testing campaigns and events
rowanseymour Jan 13, 2022
5e10a3c
Merge pull request #565 from nyaruka/simpler_fires
rowanseymour Jan 13, 2022
6504bfa
Update CHANGELOG.md for v7.1.26
rowanseymour Jan 13, 2022
d43b9ed
Add flow_id to msg and record for outgoing flow messages
rowanseymour Jan 13, 2022
93aa761
Update test database
rowanseymour Jan 13, 2022
72d4d97
Merge pull request #567 from nyaruka/update_test_db
rowanseymour Jan 14, 2022
7a5c8f8
Merge branch 'main' into msg_flow
rowanseymour Jan 14, 2022
32cfe70
Save flow id on incoming messages as well
rowanseymour Jan 14, 2022
c5d2cbd
Rename Session.TimeoutOn to WaitTimeoutOn
rowanseymour Jan 14, 2022
c12d42e
Merge branch 'main' into msg_flow
rowanseymour Jan 14, 2022
536baf5
Always read run status instead of is_active
rowanseymour Jan 14, 2022
3f1a6b7
Merge pull request #568 from nyaruka/use_run_status
rowanseymour Jan 14, 2022
55b7194
Merge pull request #566 from nyaruka/msg_flow
rowanseymour Jan 14, 2022
c1da1b9
Update wait_resume_on_expire on session writes
rowanseymour Jan 17, 2022
015f75b
Update CHANGELOG.md for v7.1.27
rowanseymour Jan 17, 2022
66c5e14
Update test database
rowanseymour Jan 17, 2022
229c8dc
Merge pull request #569 from nyaruka/wait_resume_on_expire
rowanseymour Jan 17, 2022
7d38ac5
Include redis stats in analytics cron job
rowanseymour Jan 17, 2022
ca2976f
Merge pull request #570 from nyaruka/redis_analytics
rowanseymour Jan 17, 2022
fd02a09
Let wait_resume_on_expire remain as false even when session no longer…
rowanseymour Jan 17, 2022
0dda683
Add test for setting wait fields in case of subflow
rowanseymour Jan 17, 2022
5e9aa5e
Update CHANGELOG.md for v7.1.28
rowanseymour Jan 17, 2022
5f085f5
Merge branch 'main' into modified_on_post_events
rowanseymour Jan 17, 2022
34fba1a
Update test database
rowanseymour Jan 17, 2022
c9fc5a2
Merge branch 'main' into modified_on_post_events
rowanseymour Jan 17, 2022
5d9b402
Merge pull request #465 from nyaruka/modified_on_post_events
rowanseymour Jan 17, 2022
8fe628f
Update to latest goflow
rowanseymour Jan 18, 2022
b4821c8
Update CHANGELOG.md for v7.1.29
rowanseymour Jan 18, 2022
64b7c22
Tweak analytics task for readability
rowanseymour Jan 18, 2022
07eb2e3
Include flow reference when queuing messages and add omitempty to som…
rowanseymour Jan 18, 2022
4e56142
Remove visibility from courier msg JSON
rowanseymour Jan 18, 2022
9877bf4
Remove deprecated fields on search endpoint
rowanseymour Jan 19, 2022
a5705ae
Merge pull request #572 from nyaruka/remove_deprecated_search_endpoin…
rowanseymour Jan 19, 2022
9e7c522
Merge pull request #571 from nyaruka/queue_msgs_with_flow
rowanseymour Jan 19, 2022
3332994
Update CHANGELOG.md for v7.1.30
rowanseymour Jan 19, 2022
435fba8
Tweak mailroom shutdown to only stop ES client if there is one
rowanseymour Jan 21, 2022
67a5b00
Deprecate use of exit_type and simplify creating new runs
rowanseymour Jan 22, 2022
1c15fb1
Merge pull request #573 from nyaruka/deprecate_exit_type
rowanseymour Jan 22, 2022
a720ee1
Consolidate how we interrupt sessions when given contacts
rowanseymour Jan 23, 2022
c336d9f
Add more tests for interrupts
rowanseymour Jan 24, 2022
0b06c81
Start moving session functionality to sessions.go
rowanseymour Jan 24, 2022
fcdf1ea
Rework interrupting by channel
rowanseymour Jan 24, 2022
80dba7a
Rework interrupting by flow
rowanseymour Jan 24, 2022
86e6610
Merge pull request #574 from nyaruka/rework_interrupts
rowanseymour Jan 24, 2022
922fa0e
Move more session specific code to sessions.go
rowanseymour Jan 24, 2022
aed09c6
Update CHANGELOG.md for v7.1.31
rowanseymour Jan 24, 2022
93094fe
Rework expirations to use ExitSessions
rowanseymour Jan 24, 2022
f31916b
Merge pull request #575 from nyaruka/rework_expirations
rowanseymour Jan 24, 2022
87839d5
Update CHANGELOG.md for v7.1.32
rowanseymour Jan 24, 2022
886a7f7
Update test database
rowanseymour Jan 24, 2022
422d4a6
Clear contact.current_flow_id when exiting sessions
rowanseymour Jan 24, 2022
c5c7715
Reduce exit sessions batch size to 100
rowanseymour Jan 25, 2022
30d6ded
Merge pull request #576 from nyaruka/clear_contact_current_flow
rowanseymour Jan 25, 2022
c7d002c
Create completed sessions with wait_resume_on_expire = false and upda…
rowanseymour Jan 25, 2022
d50db6d
Set wait fields on sessions for dial waits as well
rowanseymour Jan 25, 2022
d8dc7cd
Merge pull request #577 from nyaruka/dial_waits_fix
rowanseymour Jan 25, 2022
236c027
Update CHANGELOG.md for v7.1.33
rowanseymour Jan 25, 2022
f0df4c3
Merge nyaruka 'main' branch in update/v7.1.33
Robi9 Jan 26, 2022
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
Prev Previous commit
Next Next commit
Add more tests for interrupts
  • Loading branch information
rowanseymour committed Jan 24, 2022
commit c336d9fcde815fe76bf0ab49d79ce0cd82c2fe48
2 changes: 1 addition & 1 deletion core/models/msgs_test.go
Original file line number Diff line number Diff line change
@@ -634,7 +634,7 @@ func TestNewOutgoingIVR(t *testing.T) {
}

func insertTestSession(t *testing.T, ctx context.Context, rt *runtime.Runtime, org *testdata.Org, contact *testdata.Contact, flow *testdata.Flow) *models.Session {
testdata.InsertFlowSession(rt.DB, org, contact, models.SessionStatusWaiting, nil)
testdata.InsertFlowSession(rt.DB, org, contact, models.FlowTypeMessaging, models.SessionStatusWaiting, nil)

oa, err := models.GetOrgAssets(ctx, rt, testdata.Org1.ID)
require.NoError(t, err)
63 changes: 63 additions & 0 deletions core/models/sessions_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package models_test

import (
"testing"

"github.com/jmoiron/sqlx"
"github.com/nyaruka/gocommon/dbutil/assertdb"
"github.com/nyaruka/mailroom/core/models"
"github.com/nyaruka/mailroom/testsuite"
"github.com/nyaruka/mailroom/testsuite/testdata"
"github.com/stretchr/testify/require"
)

func TestInterruptContactSessions(t *testing.T) {
ctx, _, db, _ := testsuite.Get()

session1ID, _ := insertSessionAndRun(db, testdata.Cathy, models.FlowTypeMessaging, models.SessionStatusCompleted)
session2ID, _ := insertSessionAndRun(db, testdata.Cathy, models.FlowTypeMessaging, models.SessionStatusWaiting)
session3ID, _ := insertSessionAndRun(db, testdata.Bob, models.FlowTypeMessaging, models.SessionStatusWaiting)
session4ID, _ := insertSessionAndRun(db, testdata.George, models.FlowTypeMessaging, models.SessionStatusWaiting)

err := models.InterruptContactSessions(ctx, db, []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID})
require.NoError(t, err)

assertSessionAndRunStatus(t, db, session1ID, models.SessionStatusCompleted) // wasn't waiting
assertSessionAndRunStatus(t, db, session2ID, models.SessionStatusInterrupted)
assertSessionAndRunStatus(t, db, session3ID, models.SessionStatusInterrupted)
assertSessionAndRunStatus(t, db, session4ID, models.SessionStatusWaiting) // contact not included

// check other columns are correct on interrupted session
assertdb.Query(t, db, `SELECT count(*) FROM flows_flowsession WHERE ended_on IS NOT NULL AND wait_started_on IS NULL AND wait_expires_on IS NULL AND timeout_on IS NULL AND current_flow_id IS NULL AND id = $1`, session2ID).Returns(1)
}

func TestInterruptContactSessionsOfType(t *testing.T) {
ctx, _, db, _ := testsuite.Get()

session1ID, _ := insertSessionAndRun(db, testdata.Cathy, models.FlowTypeMessaging, models.SessionStatusCompleted)
session2ID, _ := insertSessionAndRun(db, testdata.Cathy, models.FlowTypeMessaging, models.SessionStatusWaiting)
session3ID, _ := insertSessionAndRun(db, testdata.Bob, models.FlowTypeMessaging, models.SessionStatusWaiting)
session4ID, _ := insertSessionAndRun(db, testdata.George, models.FlowTypeVoice, models.SessionStatusWaiting)

err := models.InterruptContactSessionsOfType(ctx, db, []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID, testdata.George.ID}, models.FlowTypeMessaging)
require.NoError(t, err)

assertSessionAndRunStatus(t, db, session1ID, models.SessionStatusCompleted) // wasn't waiting
assertSessionAndRunStatus(t, db, session2ID, models.SessionStatusInterrupted)
assertSessionAndRunStatus(t, db, session3ID, models.SessionStatusInterrupted)
assertSessionAndRunStatus(t, db, session4ID, models.SessionStatusWaiting) // wrong type

// check other columns are correct on interrupted session
assertdb.Query(t, db, `SELECT count(*) FROM flows_flowsession WHERE ended_on IS NOT NULL AND wait_started_on IS NULL AND wait_expires_on IS NULL AND timeout_on IS NULL AND current_flow_id IS NULL AND id = $1`, session2ID).Returns(1)
}

func insertSessionAndRun(db *sqlx.DB, contact *testdata.Contact, sessionType models.FlowType, status models.SessionStatus) (models.SessionID, models.FlowRunID) {
sessionID := testdata.InsertFlowSession(db, testdata.Org1, contact, sessionType, status, nil)
runID := testdata.InsertFlowRun(db, testdata.Org1, sessionID, contact, testdata.Favorites, models.RunStatus(status), "", nil)
return sessionID, runID
}

func assertSessionAndRunStatus(t *testing.T, db *sqlx.DB, sessionID models.SessionID, status models.SessionStatus) {
assertdb.Query(t, db, `SELECT status FROM flows_flowsession WHERE id = $1`, sessionID).Columns(map[string]interface{}{"status": string(status)})
assertdb.Query(t, db, `SELECT status FROM flows_flowrun WHERE session_id = $1`, sessionID).Columns(map[string]interface{}{"status": string(status)})
}
6 changes: 3 additions & 3 deletions core/tasks/expirations/cron_test.go
Original file line number Diff line number Diff line change
@@ -23,9 +23,9 @@ func TestExpirations(t *testing.T) {
defer testsuite.Reset(testsuite.ResetData | testsuite.ResetRedis)

// create a few sessions
s1 := testdata.InsertFlowSession(db, testdata.Org1, testdata.Cathy, models.SessionStatusWaiting, nil)
s2 := testdata.InsertFlowSession(db, testdata.Org1, testdata.George, models.SessionStatusWaiting, nil)
s3 := testdata.InsertFlowSession(db, testdata.Org1, testdata.Bob, models.SessionStatusWaiting, nil)
s1 := testdata.InsertFlowSession(db, testdata.Org1, testdata.Cathy, models.FlowTypeMessaging, models.SessionStatusWaiting, nil)
s2 := testdata.InsertFlowSession(db, testdata.Org1, testdata.George, models.FlowTypeMessaging, models.SessionStatusWaiting, nil)
s3 := testdata.InsertFlowSession(db, testdata.Org1, testdata.Bob, models.FlowTypeMessaging, models.SessionStatusWaiting, nil)

// simple run, no parent
r1ExpiresOn := time.Now()
4 changes: 2 additions & 2 deletions core/tasks/timeouts/cron_test.go
Original file line number Diff line number Diff line change
@@ -24,9 +24,9 @@ func TestTimeouts(t *testing.T) {

// need to create a session that has an expired timeout
s1TimeoutOn := time.Now()
testdata.InsertFlowSession(db, testdata.Org1, testdata.Cathy, models.SessionStatusWaiting, &s1TimeoutOn)
testdata.InsertFlowSession(db, testdata.Org1, testdata.Cathy, models.FlowTypeMessaging, models.SessionStatusWaiting, &s1TimeoutOn)
s2TimeoutOn := time.Now().Add(time.Hour * 24)
testdata.InsertFlowSession(db, testdata.Org1, testdata.George, models.SessionStatusWaiting, &s2TimeoutOn)
testdata.InsertFlowSession(db, testdata.Org1, testdata.George, models.FlowTypeMessaging, models.SessionStatusWaiting, &s2TimeoutOn)

time.Sleep(10 * time.Millisecond)

15 changes: 12 additions & 3 deletions testsuite/testdata/flows.go
Original file line number Diff line number Diff line change
@@ -57,11 +57,20 @@ func InsertFlowStart(db *sqlx.DB, org *Org, flow *Flow, contacts []*Contact) mod
}

// InsertFlowSession inserts a flow session
func InsertFlowSession(db *sqlx.DB, org *Org, contact *Contact, status models.SessionStatus, timeoutOn *time.Time) models.SessionID {
func InsertFlowSession(db *sqlx.DB, org *Org, contact *Contact, sessionType models.FlowType, status models.SessionStatus, timeoutOn *time.Time) models.SessionID {
now := time.Now()
tomorrow := now.Add(time.Hour * 24)

var waitStartedOn, waitExpiresOn *time.Time
if status == models.SessionStatusWaiting {
waitStartedOn = &now
waitExpiresOn = &tomorrow
}

var id models.SessionID
must(db.Get(&id,
`INSERT INTO flows_flowsession(uuid, org_id, contact_id, status, responded, created_on, timeout_on, session_type)
VALUES($1, $2, $3, $4, TRUE, NOW(), $5, 'M') RETURNING id`, uuids.New(), org.ID, contact.ID, status, timeoutOn,
`INSERT INTO flows_flowsession(uuid, org_id, contact_id, status, responded, created_on, session_type, timeout_on, wait_started_on, wait_expires_on, wait_resume_on_expire)
VALUES($1, $2, $3, $4, TRUE, NOW(), $5, $6, $7, $8, FALSE) RETURNING id`, uuids.New(), org.ID, contact.ID, status, sessionType, timeoutOn, waitStartedOn, waitExpiresOn,
))
return id
}