github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/tests/aggresive_caching_test.go (about) 1 package tests 2 3 import ( 4 "testing" 5 "time" 6 7 ravendb "github.com/ravendb/ravendb-go-client" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func initAggressiveCaching(t *testing.T, driver *RavenTestDriver) *ravendb.DocumentStore { 12 var err error 13 store := driver.getDocumentStoreMust(t) 14 store.DisableAggressiveCaching("") 15 16 { 17 session := openSessionMust(t, store) 18 err = session.Store(&User{}) 19 assert.NoError(t, err) 20 err = session.SaveChanges() 21 assert.NoError(t, err) 22 23 session.Close() 24 } 25 26 return store 27 } 28 29 func aggressiveCachingCanAggressivelyCacheLoads404(t *testing.T, driver *RavenTestDriver) { 30 defer disableLogFailedRequests()() 31 32 store := initAggressiveCaching(t, driver) 33 requestExecutor := store.GetRequestExecutor("") 34 35 oldNumOfRequests := requestExecutor.NumberOfServerRequests.Get() 36 for i := 0; i < 5; i++ { 37 session := openSessionMust(t, store) 38 { 39 dur := time.Minute * 5 40 cancel, err := session.Advanced().GetDocumentStore().AggressivelyCacheFor(dur) 41 assert.NoError(t, err) 42 var u *User 43 err = session.Load(&u, "users/not-there") 44 assert.NoError(t, err) 45 cancel() 46 } 47 session.Close() 48 } 49 50 currNo := requestExecutor.NumberOfServerRequests.Get() 51 52 assert.Equal(t, currNo, 1+oldNumOfRequests) 53 store.Close() 54 } 55 56 func aggressiveCachingCanAggressivelyCacheLoads(t *testing.T, driver *RavenTestDriver) { 57 store := initAggressiveCaching(t, driver) 58 requestExecutor := store.GetRequestExecutor("") 59 60 oldNumOfRequests := requestExecutor.NumberOfServerRequests.Get() 61 for i := 0; i < 5; i++ { 62 session := openSessionMust(t, store) 63 { 64 dur := time.Minute * 5 65 cancel, err := session.Advanced().GetDocumentStore().AggressivelyCacheFor(dur) 66 assert.NoError(t, err) 67 var u *User 68 err = session.Load(&u, "users/1-A") 69 assert.NoError(t, err) 70 cancel() 71 } 72 session.Close() 73 } 74 currNo := requestExecutor.NumberOfServerRequests.Get() 75 assert.Equal(t, currNo, 1+oldNumOfRequests) 76 } 77 78 func aggressiveCachingCanAggressivelyCacheQueries(t *testing.T, driver *RavenTestDriver) { 79 store := initAggressiveCaching(t, driver) 80 requestExecutor := store.GetRequestExecutor("") 81 82 oldNumOfRequests := requestExecutor.NumberOfServerRequests.Get() 83 for i := 0; i < 5; i++ { 84 session := openSessionMust(t, store) 85 { 86 dur := time.Minute * 5 87 cancel, err := session.Advanced().GetDocumentStore().AggressivelyCacheFor(dur) 88 assert.NoError(t, err) 89 q := session.QueryCollectionForType(userType) 90 var u []*User 91 err = q.GetResults(&u) 92 assert.NoError(t, err) 93 94 cancel() 95 } 96 session.Close() 97 } 98 currNo := requestExecutor.NumberOfServerRequests.Get() 99 assert.Equal(t, currNo, 1+oldNumOfRequests) 100 } 101 102 func aggressiveCachingWaitForNonStaleResultsIgnoresAggressiveCaching(t *testing.T, driver *RavenTestDriver) { 103 store := initAggressiveCaching(t, driver) 104 requestExecutor := store.GetRequestExecutor("") 105 106 oldNumOfRequests := requestExecutor.NumberOfServerRequests.Get() 107 for i := 0; i < 5; i++ { 108 session := openSessionMust(t, store) 109 { 110 dur := time.Minute * 5 111 cancel, err := session.Advanced().GetDocumentStore().AggressivelyCacheFor(dur) 112 assert.NoError(t, err) 113 q := session.QueryCollectionForType(userType) 114 q = q.WaitForNonStaleResults(0) 115 var u []*User 116 err = q.GetResults(&u) 117 assert.NoError(t, err) 118 cancel() 119 } 120 session.Close() 121 } 122 currNo := requestExecutor.NumberOfServerRequests.Get() 123 assert.NotEqual(t, currNo, 1+oldNumOfRequests) 124 } 125 126 func TestAggressiveCaching(t *testing.T) { 127 driver := createTestDriver(t) 128 destroy := func() { destroyDriver(t, driver) } 129 defer recoverTest(t, destroy) 130 131 // matches order of Java tests 132 aggressiveCachingCanAggressivelyCacheQueries(t, driver) 133 aggressiveCachingWaitForNonStaleResultsIgnoresAggressiveCaching(t, driver) 134 aggressiveCachingCanAggressivelyCacheLoads(t, driver) 135 aggressiveCachingCanAggressivelyCacheLoads404(t, driver) 136 }