@@ -820,12 +820,9 @@ class TimeseriesSessionCollectorTests: XCTestCase {
820820 totalRAM: 4_000_000_000 ,
821821 now: clock. now
822822 )
823- let contextReader = RUMActiveContextReaderMock ( )
824- collector. activeContextReader = contextReader
825-
826823 let startTime = clock. date
827- let activityReader = RUMSessionActivityReaderMock ( sessionID: " session-expired " , sessionStartTime: startTime, lastInteractionTime: startTime)
828- collector. sessionActivityReader = activityReader
824+ let contextReader = RUMActiveContextReaderMock ( sessionID: " session-expired " , sessionStartTime: startTime, lastInteractionTime: startTime)
825+ collector. activeContextReader = contextReader
829826 collector. start ( sessionID: " session-expired " , applicationID: " app-1 " , sessionType: . user)
830827
831828 let beforeExpiryExpectation = self . expectation ( description: " samples collected before expiry " )
@@ -838,7 +835,7 @@ class TimeseriesSessionCollectorTests: XCTestCase {
838835 // duration, mirroring how `Monitor` refreshes its snapshot on every processed command, without ever
839836 // calling stop() directly
840837 clock. date = startTime. addingTimeInterval ( RUMSessionScope . Constants. sessionMaxDuration)
841- activityReader . sessionActivity. lastInteractionTime = clock. date
838+ contextReader . sessionActivity. lastInteractionTime = clock. date
842839 let selfStopExpectation = self . expectation ( description: " self-stop settled " )
843840 DispatchQueue . global ( qos: . utility) . asyncAfter ( deadline: . now( ) + 0.3 ) { selfStopExpectation. fulfill ( ) }
844841 waitForExpectations ( timeout: 2 )
@@ -868,12 +865,9 @@ class TimeseriesSessionCollectorTests: XCTestCase {
868865 totalRAM: 4_000_000_000 ,
869866 now: clock. now
870867 )
871- let contextReader = RUMActiveContextReaderMock ( )
872- collector. activeContextReader = contextReader
873-
874868 let startTime = clock. date
875- let activityReader = RUMSessionActivityReaderMock ( sessionID: " session-idle " , sessionStartTime: startTime, lastInteractionTime: startTime)
876- collector. sessionActivityReader = activityReader
869+ let contextReader = RUMActiveContextReaderMock ( sessionID: " session-idle " , sessionStartTime: startTime, lastInteractionTime: startTime)
870+ collector. activeContextReader = contextReader
877871 collector. start ( sessionID: " session-idle " , applicationID: " app-1 " , sessionType: . user)
878872
879873 let beforeTimeoutExpectation = self . expectation ( description: " samples collected before timeout " )
@@ -906,18 +900,15 @@ class TimeseriesSessionCollectorTests: XCTestCase {
906900 totalRAM: 4_000_000_000 ,
907901 now: clock. now
908902 )
909- let contextReader = RUMActiveContextReaderMock ( )
910- collector. activeContextReader = contextReader
911-
912903 let startTime = clock. date
913- let activityReader = RUMSessionActivityReaderMock ( sessionID: " session-active " , sessionStartTime: startTime, lastInteractionTime: startTime)
914- collector. sessionActivityReader = activityReader
904+ let contextReader = RUMActiveContextReaderMock ( sessionID: " session-active " , sessionStartTime: startTime, lastInteractionTime: startTime)
905+ collector. activeContextReader = contextReader
915906 collector. start ( sessionID: " session-active " , applicationID: " app-1 " , sessionType: . user)
916907
917908 // When — a RUM interaction is reported right before what would have been the inactivity timeout,
918909 // resetting the clock the reader exposes to `sample()`
919910 clock. date = startTime. addingTimeInterval ( RUMSessionScope . Constants. sessionTimeoutDuration - 1 )
920- activityReader . sessionActivity. lastInteractionTime = clock. date
911+ contextReader . sessionActivity. lastInteractionTime = clock. date
921912 clock. date = clock. date. addingTimeInterval ( RUMSessionScope . Constants. sessionTimeoutDuration - 1 )
922913
923914 let expectation = self . expectation ( description: " still sampling " )
@@ -998,21 +989,28 @@ class TimeseriesSessionCollectorTests: XCTestCase {
998989private class RUMActiveContextReaderMock : RUMActiveContextReader {
999990 var globalAttributes : [ AttributeKey : AttributeValue ]
1000991 var activeView : ( id: String ? , path: String ? , name: String ? )
992+ var sessionActivity : ( sessionID: String ? , sessionStartTime: Date ? , lastInteractionTime: Date ? )
1001993
1002994 init (
1003995 globalAttributes: [ AttributeKey : AttributeValue ] = [ : ] ,
1004- activeView: ( id: String ? , path: String ? , name: String ? ) = ( . mockAny( ) , . mockAny( ) , nil )
996+ activeView: ( id: String ? , path: String ? , name: String ? ) = ( . mockAny( ) , . mockAny( ) , nil ) ,
997+ sessionID: String ? = nil ,
998+ sessionStartTime: Date ? = nil ,
999+ lastInteractionTime: Date ? = nil
10051000 ) {
10061001 self . globalAttributes = globalAttributes
10071002 self . activeView = activeView
1003+ self . sessionActivity = ( sessionID, sessionStartTime, lastInteractionTime)
10081004 }
1009- }
10101005
1011- private class RUMSessionActivityReaderMock : RUMSessionActivityReader {
1012- var sessionActivity : ( sessionID: String ? , sessionStartTime: Date ? , lastInteractionTime: Date ? )
1013-
1014- init ( sessionID: String ? = nil , sessionStartTime: Date ? = nil , lastInteractionTime: Date ? = nil ) {
1015- self . sessionActivity = ( sessionID, sessionStartTime, lastInteractionTime)
1006+ func isSessionExpired( sessionID: String , at date: Date ) -> Bool {
1007+ guard sessionActivity. sessionID == sessionID,
1008+ let sessionStartTime = sessionActivity. sessionStartTime,
1009+ let lastInteractionTime = sessionActivity. lastInteractionTime else {
1010+ return false
1011+ }
1012+ return RUMSessionScope . hasExpired ( sessionStartTime: sessionStartTime, currentTime: date)
1013+ || RUMSessionScope . hasTimedOut ( lastInteractionTime: lastInteractionTime, currentTime: date)
10161014 }
10171015}
10181016
0 commit comments