<testResult _class='hudson.tasks.junit.TestResult'><duration>4.7279997</duration><empty>false</empty><failCount>0</failCount><passCount>74</passCount><skipCount>0</skipCount><suite><case><age>0</age><className>com.ustadmobile.lib.rest.InsertDefaultSiteCallbackTest</className><duration>0.301</duration><failedSince>0</failedSince><name>givenDatabaseCreated_thenWhenOpened_itShouldBloodyWellBeThereFfs</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout>16:38:14,807 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6
16:38:14,808 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - No custom configurators were discovered as a service.
16:38:14,808 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
16:38:14,809 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - Constructed 
...[truncated 3442 chars]...
level of logger [io.netty] to INFO
16:38:14,900 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@3c9bfddc - End of configuration.
16:38:14,900 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@1a9c38eb - Registering current configuration as safe fallback point
16:38:14,900 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 86 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY

</stdout></case><duration>0.301</duration><name>com.ustadmobile.lib.rest.InsertDefaultSiteCallbackTest</name><properties></properties><stderr></stderr><stdout>16:38:14,807 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6
16:38:14,808 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - No custom configurators were discovered as a service.
16:38:14,808 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
16:38:14,809 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - Constructed 
...[truncated 3442 chars]...
level of logger [io.netty] to INFO
16:38:14,900 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@3c9bfddc - End of configuration.
16:38:14,900 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@1a9c38eb - Registering current configuration as safe fallback point
16:38:14,900 |-INFO in ch.qos.logback.classic.util.ContextInitializer@58ffcbd7 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 86 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY

</stdout><timestamp>2025-06-27T14:38:14.764Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.lib.rest.PersonAuthRegisterRouteTest</className><duration>1.052</duration><failedSince>0</failedSince><name>givenValidCredentials_whenLoginCalled_thenShouldReturnAccount</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] : created tables
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: table
...[truncated 34289 chars]...
27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "
         SELECT PersonAuth2.* FROM PersonAuth2 where PersonAuth2.pauthUid = ?
    "
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4 : end transaction #4
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.rest.PersonAuthRegisterRouteTest</className><duration>0.122</duration><failedSince>0</failedSince><name>givenInvalidCredentials_whenLoginCalled_thenShouldRespondForbidden</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] : created tables
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: table
...[truncated 34289 chars]...
27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "
         SELECT PersonAuth2.* FROM PersonAuth2 where PersonAuth2.pauthUid = ?
    "
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4 : end transaction #4
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.rest.PersonAuthRegisterRouteTest</className><duration>0.107</duration><failedSince>0</failedSince><name>givenRegisterPersonWithAuth_whenRegisterCalled_thenShouldGenerateAuth</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] : created tables
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: table
...[truncated 34289 chars]...
27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "
         SELECT PersonAuth2.* FROM PersonAuth2 where PersonAuth2.pauthUid = ?
    "
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4 : end transaction #4
</stderr><stdout></stdout></case><duration>1.281</duration><name>com.ustadmobile.lib.rest.PersonAuthRegisterRouteTest</name><properties></properties><stderr>Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] : created tables
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Jun 27, 2025 4:38:15 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: table
...[truncated 34289 chars]...
27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [prepareAndUseStatementAsync - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - prepare "
         SELECT PersonAuth2.* FROM PersonAuth2 where PersonAuth2.pauthUid = ?
    "
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [RoomJdbcImplHelper - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] - useNewConnectionAsyncInternal connection #4 : end transaction #4
</stderr><stdout></stdout><timestamp>2025-06-27T14:38:15.068Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.lib.rest.TestContentEntryVersionRoute</className><duration>0.019</duration><failedSince>0</failedSince><name>givenEntryNotCached_whenRequested_thenShouldReturn404</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: RequestedEntry
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.rest.TestContentEntryVersionRoute</className><duration>0.067</duration><failedSince>0</failedSince><name>givenEntryIsCached_whenRequested_thenResponseShouldMatch</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: RequestedEntry
</stderr><stdout></stdout></case><duration>0.086</duration><name>com.ustadmobile.lib.rest.TestContentEntryVersionRoute</name><properties></properties><stderr>Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] : created tables
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: RequestedEntry
</stderr><stdout></stdout><timestamp>2025-06-27T14:38:16.351Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.lib.rest.TestSiteRoute</className><duration>0.025</duration><failedSince>0</failedSince><name>givenAvailableWorkSpace_whenRequested_thenShouldReturnWorkSpaceObject</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, SyncNode, Site, PersonAuth2, SystemPermission
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: SyncNode
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Site
</stderr><stdout></stdout></case><duration>0.025</duration><name>com.ustadmobile.lib.rest.TestSiteRoute</name><properties></properties><stderr>Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
INFO: [INFO] DoorLog - [DatabaseBuilder.build - jdbc:sqlite:build/tmp/UmAppDatabase.sqlite] database build complete
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Person, SyncNode, Site, PersonAuth2, SystemPermission
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: SyncNode
Jun 27, 2025 4:38:16 PM io.github.aakira.napier.DebugAntilog performLog
FINEST: [VERBOSE] DoorLog - InvalidationTracker: tables invalidated: Site
</stderr><stdout></stdout><timestamp>2025-06-27T14:38:16.437Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.lib.rest.VerifySignInWithPasskeyTest</className><duration>0.154</duration><failedSince>0</failedSince><name>verifyPasskeySignInWithValidData</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.rest.VerifySignInWithPasskeyTest</className><duration>0.008</duration><failedSince>0</failedSince><name>verifyPasskeySignInWithWrongSignature</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.rest.VerifySignInWithPasskeyTest</className><duration>0.006</duration><failedSince>0</failedSince><name>verifyPasskeySignInWithWrongChallenge</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.168</duration><name>com.ustadmobile.lib.rest.VerifySignInWithPasskeyTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:38:16.463Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.jsmodules.JsIntlWrapperTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenValidLocale_whenFormatCalled_thenShouldFormatDate[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout>[log] Now: 6/27/2025
</stdout></case><duration>0.0</duration><name>com.ustadmobile.jsmodules.JsIntlWrapperTest</name><properties></properties><stderr></stderr><stdout>[log] Now: 6/27/2025
</stdout><timestamp>2025-06-27T14:37:56.101Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.util.WebEndpointResolverTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenApiUrlInSearchParams_whenEndpointResolved_thenShouldReturnSearchParam[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.util.WebEndpointResolverTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenRootHref_whenEndpointIsResolved_thenShouldReturnHref[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.util.WebEndpointResolverTest</className><duration>0.001</duration><failedSince>0</failedSince><name>givenHrefWithDevelopmentLink_whenEndpointIsResolved_thenShouldReturnHref[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.util.WebEndpointResolverTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenHrefWithProductionLink_whenEndpointIsResolved_thenShouldReturnHref[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.001</duration><name>com.ustadmobile.util.WebEndpointResolverTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:37:56.101Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.core.navigation.SavedStateHandle2Test</className><duration>0.001</duration><failedSince>0</failedSince><name>givenStateSavedToHistory_whenNewHandleCreated_thenValueShouldBeRestored[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.001</duration><name>com.ustadmobile.core.navigation.SavedStateHandle2Test</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:36:42.194Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.463</duration><failedSince>0</failedSince><name>givenResponseIsUpdated_whenRetrieved_thenLatestResponseWillBeReturned[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.026</duration><failedSince>0</failedSince><name>givenEmptyFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHit[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.005</duration><failedSince>0</failedSince><name>givenEntryNotStored_whenRetrieved_thenWillReturnNull[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.072</duration><failedSince>0</failedSince><name>givenEntryNotLocked_whenLockAdded_thenWillBeMovedToPersistentDir[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.022</duration><failedSince>0</failedSince><name>givenNonCompressableFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndNotCompressed[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.016</duration><failedSince>0</failedSince><name>givenEntryLocked_whenLockRemoved_thenWillBeMovedToCacheDir[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.015</duration><failedSince>0</failedSince><name>givenResponseIsNotUpdated_whenStored_thenWillUpdateLastAccessAndValidationTime[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.013</duration><failedSince>0</failedSince><name>givenCompressableFileStored_whenRequestMadeWithoutAcceptEncoding_thenWillBeRetrievedAsCacheHitAndBeCompressed[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.014</duration><failedSince>0</failedSince><name>givenCompressableFileStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndBeCompressed[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.015</duration><failedSince>0</failedSince><name>givenFileCachedAndStored_whenPartialRequestMadeIfRangeNotMatched_thenWillReceiveFullResponse[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.013</duration><failedSince>0</failedSince><name>givenLockedEntryStored_whenRequestMade_thenWillBeRetrievedAsCacheHitAndSavedInPersistentPath[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheJvmTest</className><duration>0.035</duration><failedSince>0</failedSince><name>givenFileCachedAndStored_whenPartialRequestMade_thenWillReceivePartialData[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout></case><duration>0.711</duration><name>com.ustadmobile.libcache.UstadCacheJvmTest</name><properties></properties><stderr>SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
</stderr><stdout></stdout><timestamp>2025-06-27T14:34:31.547Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.libcache.UstadCacheTrimmerTest</className><duration>0.103</duration><failedSince>0</failedSince><name>givenEntriesExceedSize_whenTrimRun_thenWillEvictRequiredEntries[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.103</duration><name>com.ustadmobile.libcache.UstadCacheTrimmerTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:34:32.260Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.libcache.cachecontrol.CacheControlFreshnessCheckerImplTest</className><duration>0.002</duration><failedSince>0</failedSince><name>givenResponseWithinMaxAge_whenChecked_isFresh[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.cachecontrol.CacheControlFreshnessCheckerImplTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenResponseHasMustRevalidate_whenChecked_isStale[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.cachecontrol.CacheControlFreshnessCheckerImplTest</className><duration>0.001</duration><failedSince>0</failedSince><name>givenResponseIsImmutable_whenChecked_isFresh[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.cachecontrol.CacheControlFreshnessCheckerImplTest</className><duration>0.001</duration><failedSince>0</failedSince><name>givenRequestHasNoCacheDirective_whenChecked_isStale[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.004</duration><name>com.ustadmobile.libcache.cachecontrol.CacheControlFreshnessCheckerImplTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:34:32.366Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.libcache.cachecontrol.ResponseCacheabilityCheckerImplTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenPartialResponse_whenChecked_notCacheable[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.cachecontrol.ResponseCacheabilityCheckerImplTest</className><duration>0.001</duration><failedSince>0</failedSince><name>given200OkResponse_whenChecked_isCacheable[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.cachecontrol.ResponseCacheabilityCheckerImplTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenNoStoreInHeader_whenChecked_notCacheable[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.002</duration><name>com.ustadmobile.libcache.cachecontrol.ResponseCacheabilityCheckerImplTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:34:32.372Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.libcache.io.RangeInputStreamTest</className><duration>0.002</duration><failedSince>0</failedSince><name>givenValidRange_whenReadInSameIncrementAsBuffer_thenWillMatch[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.io.RangeInputStreamTest</className><duration>0.002</duration><failedSince>0</failedSince><name>givenValidRange_whenRead_thenWillMatch[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.004</duration><name>com.ustadmobile.libcache.io.RangeInputStreamTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:34:32.375Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>1.245</duration><failedSince>0</failedSince><name>givenImmutableEntryWasCached_whenRequested_thenCacheWillHit[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>0.017</duration><failedSince>0</failedSince><name>givenCompressableEntryNotYetCachedAlreadyEncoded_whenRequested_thenWillRespondAndCacheIt[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>0.011</duration><failedSince>0</failedSince><name>givenResponseHasNoStoreHeader_whenRequested_thenIsNotStored[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>0.086</duration><failedSince>0</failedSince><name>givenResponsePartiallyStored_whenRequestedWithResumeUuid_thenWillResume[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>0.024</duration><failedSince>0</failedSince><name>givenEntryNotYetCached_whenRequested_thenWillRespondAndCacheIt[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>0.026</duration><failedSince>0</failedSince><name>givenEntryIsStaleAndValidatable_whenRequested_thenIsValidated[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>0.013</duration><failedSince>0</failedSince><name>givenCompressableEntryNotYetCachedNotEncoded_whenRequested_thenWillRespondAndCacheIt[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</className><duration>0.006</duration><failedSince>0</failedSince><name>givenRequestNotStorable_whenRequested_thenIsNotStored[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout></case><duration>1.429</duration><name>com.ustadmobile.libcache.okhttp.UstadCacheInterceptorTest</name><properties></properties><stderr>Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localh
...[truncated 19531 chars]...
ile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
INFO: INFO DoorLog - [DatabaseBuilder.build - jdbc:sqlite::memory:] database build complete
Jun 27, 2025 4:34:33 PM com.ustadmobile.core.util.NapierAntilogJvm performLog
FINEST: FINEST UstadCache - OKHttp-CacheInterceptor:  intercept: GET http://localhost.localdomain:36677/testfile1.png
</stderr><stdout></stdout><timestamp>2025-06-27T14:34:32.383Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.libcache.partial.ContentRangeTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenRangeWithStartToEnd_whenParsed_thenMatches[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.partial.ContentRangeTest</className><duration>0.002</duration><failedSince>0</failedSince><name>givenRangeWhereLastByteAfterTotalBytes_whenParsed_thenThrowsRangeNotSatisfiableException[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.partial.ContentRangeTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenRangeWhereStartIsAfterLast_whenParsed_thenThrowsRangeNotSatisfiableException[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.partial.ContentRangeTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenBlankStart_whenParsed_thenMatches[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.libcache.partial.ContentRangeTest</className><duration>0.0</duration><failedSince>0</failedSince><name>givenValidRange_whenParsed_thenMatches[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.002</duration><name>com.ustadmobile.libcache.partial.ContentRangeTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:34:33.814Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.lib.util.TestAcceptEncodingUtil</className><duration>0.008</duration><failedSince>0</failedSince><name>givenEncodingNotSupported_whenIsEncodingAcceptableCalled_thenShouldBeFalse[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestAcceptEncodingUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenEncodingSupportedByStar_whenIsEncodingAcceptableCalled_thenShouldBeTrue[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestAcceptEncodingUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenEncodingDirectlySupported_whenIsEncodingAcceptableCalled_thenShouldBeTrue[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestAcceptEncodingUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenEncodingWithQualityValue_whenParsed_thenShouldBeInMap[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestAcceptEncodingUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenEncodingWithoutQualityValue_whenParsed_thenShouldBeInMap[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.009</duration><name>com.ustadmobile.lib.util.TestAcceptEncodingUtil</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:33:10.614Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.lib.util.TestRangeUtil</className><duration>0.008</duration><failedSince>0</failedSince><name>givenZeroToEndRangeHeader_whenParseRangeRequestHeaderCalled_thenShouldReturnWholeFileRange[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestRangeUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenUnsatisfiableRangeHeader_whenParseRangeRequestHeaderCalled_tehnShouldReturnRangeNotSatisfiable[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestRangeUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenValidRangeHeader_whenParseRangeRequestHeaderCalled_thenShouldReturnRange[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestRangeUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenInvalidHeader_whenParseRangeRequestCalled_thenShouldReturnBadRequest[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.008</duration><name>com.ustadmobile.lib.util.TestRangeUtil</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:33:10.624Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.lib.util.TestSysPathUtil</className><duration>0.006</duration><failedSince>0</failedSince><name>givenCommandInPathOnWindows_whenCommandInPathCalled_thenReturnsFile[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestSysPathUtil</className><duration>0.001</duration><failedSince>0</failedSince><name>givenCommandNotInPathOnWindows_whenCommandInPathCalled_thenReturnsNull[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestSysPathUtil</className><duration>0.0</duration><failedSince>0</failedSince><name>givenCommandNotInPathOnUnix_whenFindCommandInPathCalled_thenReturnNull[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.lib.util.TestSysPathUtil</className><duration>0.001</duration><failedSince>0</failedSince><name>givenCommandInPathOnUnix_whenFindCommandInPathCalled_thenReturnsFile[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.008</duration><name>com.ustadmobile.lib.util.TestSysPathUtil</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:33:10.635Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.xxhashkmp.commonjvmimpl.XXHashJvmTest</className><duration>0.012</duration><failedSince>0</failedSince><name>givenString_whenInvoked_willHash[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout>a96086d5c2cb52a9
</stdout></case><case><age>0</age><className>com.ustadmobile.xxhashkmp.commonjvmimpl.XXHashJvmTest</className><duration>0.008</duration><failedSince>0</failedSince><name>givenLongArray_whenInvoked_thenWillHash[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout>a96086d5c2cb52a9
</stdout></case><duration>0.02</duration><name>com.ustadmobile.xxhashkmp.commonjvmimpl.XXHashJvmTest</name><properties></properties><stderr></stderr><stdout>a96086d5c2cb52a9
</stdout><timestamp>2025-06-27T14:33:10.876Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.xxhashkmp.jsimpl.XXHashJsTest</className><duration>0.0</duration><failedSince>0</failedSince><name>test[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.xxhashkmp.jsimpl.XXHashJsTest</className><duration>0.001</duration><failedSince>0</failedSince><name>givenLongArray_whenInvoked_thenWillHash[js, browser, ChromeHeadless137.0.0.0, Linuxx86_64]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.001</duration><name>com.ustadmobile.xxhashkmp.jsimpl.XXHashJsTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:33:18.132Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.sharedse.impl.http.IHTTPSessionExtTest</className><duration>0.429</duration><failedSince>0</failedSince><name>givenPutRequestWithBody_whenParseRequestBodyCalled_thenShouldReturnContent[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout>16:38:13,993 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - No custom configurators were discovered as a service.
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Constructed con
...[truncated 3708 chars]...
 level of logger [io.netty] to INFO
16:38:14,083 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@24b6b8f6 - End of configuration.
16:38:14,084 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@72cf2de5 - Registering current configuration as safe fallback point
16:38:14,084 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 84 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY

</stdout></case><case><age>0</age><className>com.ustadmobile.sharedse.impl.http.IHTTPSessionExtTest</className><duration>0.016</duration><failedSince>0</failedSince><name>givenLargerPostRequestWithBody_whenParseRequestCalled_thenShouldReturnContent[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout>16:38:13,993 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - No custom configurators were discovered as a service.
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Constructed con
...[truncated 3708 chars]...
 level of logger [io.netty] to INFO
16:38:14,083 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@24b6b8f6 - End of configuration.
16:38:14,084 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@72cf2de5 - Registering current configuration as safe fallback point
16:38:14,084 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 84 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY

</stdout></case><case><age>0</age><className>com.ustadmobile.sharedse.impl.http.IHTTPSessionExtTest</className><duration>0.015</duration><failedSince>0</failedSince><name>givenSmallPostRequestWithBody_whenParseRequestCalled_thenShouldReturnContent[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout>16:38:13,993 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - No custom configurators were discovered as a service.
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Constructed con
...[truncated 3708 chars]...
 level of logger [io.netty] to INFO
16:38:14,083 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@24b6b8f6 - End of configuration.
16:38:14,084 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@72cf2de5 - Registering current configuration as safe fallback point
16:38:14,084 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 84 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY

</stdout></case><duration>0.461</duration><name>com.ustadmobile.sharedse.impl.http.IHTTPSessionExtTest</name><properties></properties><stderr></stderr><stdout>16:38:13,993 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - No custom configurators were discovered as a service.
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
16:38:13,994 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - Constructed con
...[truncated 3708 chars]...
 level of logger [io.netty] to INFO
16:38:14,083 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@24b6b8f6 - End of configuration.
16:38:14,084 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@72cf2de5 - Registering current configuration as safe fallback point
16:38:14,084 |-INFO in ch.qos.logback.classic.util.ContextInitializer@5af3a0f - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 84 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY

</stdout><timestamp>2025-06-27T14:38:13.929Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.sharedse.impl.http.TestHtmlFilterSerializer</className><duration>0.042</duration><failedSince>0</failedSince><name>givenXhtmlWithEntities_whenFiltered_thenShouldParseSuccessfully[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><case><age>0</age><className>com.ustadmobile.sharedse.impl.http.TestHtmlFilterSerializer</className><duration>0.008</duration><failedSince>0</failedSince><name>givenValidXhtmlPage_whenFiltered_thenShouldParseSuccessfully[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.051</duration><name>com.ustadmobile.sharedse.impl.http.TestHtmlFilterSerializer</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:38:14.391Z</timestamp></suite><suite><case><age>0</age><className>com.ustadmobile.sharedse.util.UmZipUtilTest</className><duration>0.052</duration><failedSince>0</failedSince><name>givenAnEpubFile_whenUnzipped_thenAllFilesShouldBeAvailable[jvm]</name><properties></properties><skipped>false</skipped><status>PASSED</status><stderr></stderr><stdout></stdout></case><duration>0.052</duration><name>com.ustadmobile.sharedse.util.UmZipUtilTest</name><properties></properties><stderr></stderr><stdout></stdout><timestamp>2025-06-27T14:38:14.443Z</timestamp></suite></testResult>