Datei: IntegrationTests/IntegrationTests/QueryCacheTests.cs
Last Commit (182cfd7)
1 | using NDO. Logging; |
2 | using NUnit.Framework; |
3 | using Reisekosten.Personal; |
4 | using System; |
5 | using System.Collections.Generic; |
6 | using System.Linq; |
7 | using System.Text; |
8 | using System.Threading.Tasks; |
9 | |
10 | namespace NdoUnitTests |
11 | { |
12 | ····[TestFixture] |
13 | public class QueryCacheTests |
14 | ····{ |
15 | ········void CreateObject() |
16 | ········{ |
17 | ············var pm = PmFactory.NewPersistenceManager(); |
18 | ············Mitarbeiter m = new Mitarbeiter(); |
19 | ············m.Vorname = "Mirko"; |
20 | ············m.Nachname = "Matytschak"; |
21 | ············pm.MakePersistent( m ); |
22 | ············pm.Save(); |
23 | ········} |
24 | |
25 | ········[TearDown] |
26 | ········public void TearDown() |
27 | ········{ |
28 | ············var pm = PmFactory.NewPersistenceManager(); |
29 | ············pm.Objects<Mitarbeiter>().DeleteDirectly(); |
30 | ········} |
31 | |
32 | ········[Test] |
33 | ········public void TestSimpleQuery() |
34 | ········{ |
35 | ············CreateObject(); |
36 | ············var pm = PmFactory.NewPersistenceManager(); |
37 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
38 | ············pm.UseQueryCache = true; |
39 | ············var result = pm.Objects<Mitarbeiter>().ResultTable; |
40 | ············Assert.That( result.Count == 1 ); |
41 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 1 ) ); |
42 | ············pm.VerboseMode = true; |
43 | ············var testAdapter = new TestLogAdapter(); |
44 | ············pm.LogAdapter = testAdapter; |
45 | ············result = pm.Objects<Mitarbeiter>().ResultTable; |
46 | ············Assert.That( result.Count == 1 ); |
47 | Assert. That( testAdapter. Text. Trim( ) == "Getting results from QueryCache" ) ; |
48 | ········} |
49 | |
50 | ········[Test] |
51 | ········public void QueryCacheCanBeSwitchedOff() |
52 | ········{ |
53 | ············CreateObject(); |
54 | ············var pm = PmFactory.NewPersistenceManager(); |
55 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
56 | ············pm.UseQueryCache = false; |
57 | ············var result = pm.Objects<Mitarbeiter>().ResultTable; |
58 | ············Assert.That( result.Count == 1 ); |
59 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
60 | ············pm.VerboseMode = true; |
61 | ············var testAdapter = new TestLogAdapter(); |
62 | ············pm.LogAdapter = testAdapter; |
63 | ············result = pm.Objects<Mitarbeiter>().ResultTable; |
64 | ············Assert.That( result.Count == 1 ); |
65 | Assert. That( testAdapter. Text. IndexOf( "QueryCache" ) == -1 ) ; |
66 | ········} |
67 | |
68 | ········[Test] |
69 | ········public void DifferentQueryDoesntUseTheCache() |
70 | ········{ |
71 | ············CreateObject(); |
72 | ············var pm = PmFactory.NewPersistenceManager(); |
73 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
74 | ············pm.UseQueryCache = true; |
75 | ············var result = pm.Objects<Mitarbeiter>().ResultTable; |
76 | ············Assert.That( result.Count == 1 ); |
77 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 1 ) ); |
78 | ············pm.VerboseMode = true; |
79 | ············var testAdapter = new TestLogAdapter(); |
80 | ············pm.LogAdapter = testAdapter; |
81 | ············result = pm.Objects<Mitarbeiter>().Where(m=>m.Vorname == "Mirko").ResultTable; |
82 | ············Assert.That( result.Count == 1 ); |
83 | Assert. That( testAdapter. Text. IndexOf( "QueryCache" ) == -1 ) ; |
84 | ········} |
85 | |
86 | ········[Test] |
87 | ········public void TakeAndSkipDontUseTheSameCacheResult() |
88 | ········{ |
89 | ············CreateObject(); |
90 | ············var pm = PmFactory.NewPersistenceManager(); |
91 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
92 | ············pm.UseQueryCache = true; |
93 | ············var result = pm.Objects<Mitarbeiter>().OrderBy(m=>m.Nachname).Skip(0).Take(1).ResultTable; |
94 | ············Assert.That( result.Count == 1 ); |
95 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 1 ) ); |
96 | ············pm.VerboseMode = true; |
97 | ············var testAdapter = new TestLogAdapter(); |
98 | ············pm.LogAdapter = testAdapter; |
99 | ············result = pm.Objects<Mitarbeiter>().OrderBy(m=>m.Nachname).Skip(0).Take(2).ResultTable; |
100 | ············Assert.That( result.Count == 1 ); |
101 | Assert. That( testAdapter. Text. IndexOf( "QueryCache" ) == -1 ) ; |
102 | ········} |
103 | ····} |
104 | } |
105 |
New Commit (a04c7be)
1 | using Formfakten. TestLogger; |
2 | using NUnit.Framework; |
3 | using Reisekosten.Personal; |
4 | |
5 | namespace NdoUnitTests |
6 | { |
7 | ····[TestFixture] |
8 | public class QueryCacheTests : NDOTest |
9 | ····{ |
10 | ········public QueryCacheTests() |
11 | ········{ |
12 | ········} |
13 | ········void CreateObject() |
14 | ········{ |
15 | ············var pm = PmFactory.NewPersistenceManager(); |
16 | ············Mitarbeiter m = new Mitarbeiter(); |
17 | ············m.Vorname = "Mirko"; |
18 | ············m.Nachname = "Matytschak"; |
19 | ············pm.MakePersistent( m ); |
20 | ············pm.Save(); |
21 | ········} |
22 | |
23 | ········[TearDown] |
24 | ········public void TearDown() |
25 | ········{ |
26 | ············var pm = PmFactory.NewPersistenceManager(); |
27 | ············pm.Objects<Mitarbeiter>().DeleteDirectly(); |
28 | ············Logger.ClearTestLogs(); |
29 | ········} |
30 | |
31 | ········[Test] |
32 | ········public void TestSimpleQuery() |
33 | ········{ |
34 | ············CreateObject(); |
35 | ············var pm = PmFactory.NewPersistenceManager(); |
36 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
37 | ············pm.UseQueryCache = true; |
38 | ············var result = pm.Objects<Mitarbeiter>().ResultTable; |
39 | ············Assert.That( result.Count == 1 ); |
40 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 1 ) ); |
41 | ············result = pm.Objects<Mitarbeiter>().ResultTable; |
42 | ············Assert.That( result.Count == 1 ); |
43 | var logs = Logger. FindLogsWith( "Getting results from QueryCache" ) ; |
44 | ············Assert.That( logs.Count > 0 ); |
45 | ········} |
46 | |
47 | ········[Test] |
48 | ········public void QueryCacheCanBeSwitchedOff() |
49 | ········{ |
50 | ············CreateObject(); |
51 | ············var pm = PmFactory.NewPersistenceManager(); |
52 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
53 | ············pm.UseQueryCache = false; |
54 | ············var result = pm.Objects<Mitarbeiter>().ResultTable; |
55 | ············Assert.That( result.Count == 1 ); |
56 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
57 | ············result = pm.Objects<Mitarbeiter>().ResultTable; |
58 | ············Assert.That( result.Count == 1 ); |
59 | var logs = Logger. FindLogsWith( "QueryCache" ) ; |
60 | ············Assert.That( logs.Count == 0 ); |
61 | ········} |
62 | |
63 | ········[Test] |
64 | ········public void DifferentQueryDoesntUseTheCache() |
65 | ········{ |
66 | ············CreateObject(); |
67 | ············var pm = PmFactory.NewPersistenceManager(); |
68 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
69 | ············pm.UseQueryCache = true; |
70 | ············var result = pm.Objects<Mitarbeiter>().ResultTable; |
71 | ············Assert.That( result.Count == 1 ); |
72 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 1 ) ); |
73 | ············result = pm.Objects<Mitarbeiter>().Where(m=>m.Vorname == "Mirko").ResultTable; |
74 | ············Assert.That( result.Count == 1 ); |
75 | var logs = Logger. FindLogsWith( "QueryCache" ) ; |
76 | ············Assert.That( logs.Count == 0 ); |
77 | ········} |
78 | |
79 | ········[Test] |
80 | ········public void TakeAndSkipDontUseTheSameCacheResult() |
81 | ········{ |
82 | ············CreateObject(); |
83 | ············var pm = PmFactory.NewPersistenceManager(); |
84 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 0 ) ); |
85 | ············pm.UseQueryCache = true; |
86 | ············var result = pm.Objects<Mitarbeiter>().OrderBy(m=>m.Nachname).Skip(0).Take(1).ResultTable; |
87 | ············Assert.That( result.Count == 1 ); |
88 | ············Assert.That( pm.QueryCache.Count, Is.EqualTo( 1 ) ); |
89 | ············result = pm.Objects<Mitarbeiter>().OrderBy(m=>m.Nachname).Skip(0).Take(2).ResultTable; |
90 | ············Assert.That( result.Count == 1 ); |
91 | var logs = Logger. FindLogsWith( "QueryCache" ) ; |
92 | ············Assert.That( logs.Count == 0 ); |
93 | ········} |
94 | ····} |
95 | } |
96 |