Skip to content

Commit aedf360

Browse files
committed
Prefetch tests use standard PopulateData method to fill database
1 parent d97f076 commit aedf360

4 files changed

Lines changed: 65 additions & 50 deletions

File tree

Orm/Xtensive.Orm.Tests/Storage/Prefetch/PrefetchDelayedElementsTest.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// Copyright (C) 2003-2010 Xtensive LLC.
2-
// All rights reserved.
3-
// For conditions of distribution and use, see license.
1+
// Copyright (C) 2009-2026 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
44
// Created by: Alexander Nikolaev
55
// Created: 2009.10.07
66

@@ -45,6 +45,18 @@ public override void TestFixtureSetUp()
4545
}
4646
}
4747

48+
protected override void PopulateData()
49+
{
50+
using (var session = Domain.OpenSession())
51+
using (var transactionScope = session.OpenTransaction()) {
52+
for (int i = 0; i < 111; i++)
53+
PrefetchTestHelper.FillDataBase(session);
54+
orderType = Domain.Model.Types[typeof(Order)];
55+
customerType = Domain.Model.Types[typeof(Customer)];
56+
transactionScope.Complete();
57+
}
58+
}
59+
4860
[Test]
4961
public void SimpleTest()
5062
{

Orm/Xtensive.Orm.Tests/Storage/Prefetch/PrefetchManagerTestBase.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// Copyright (C) 2003-2010 Xtensive LLC.
2-
// All rights reserved.
3-
// For conditions of distribution and use, see license.
1+
// Copyright (C) 2009-2026 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
44
// Created by: Alexander Nikolaev
55
// Created: 2009.10.26
66

@@ -80,9 +80,12 @@ public override void TestFixtureSetUp()
8080
BindingFlags.NonPublic | BindingFlags.Instance);
8181
PrefetchProcessorField = typeof (SqlSessionHandler).GetField("prefetchManager",
8282
BindingFlags.NonPublic | BindingFlags.Instance);
83-
PrefetchTestHelper.FillDataBase(Domain);
83+
8484
}
8585

86+
protected override void PopulateData() => PrefetchTestHelper.FillDataBase(Domain);
87+
88+
8689
protected Key GetFirstKey<T>()
8790
where T : Entity
8891
{

Orm/Xtensive.Orm.Tests/Storage/Prefetch/PrefetchTest.cs

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2009-2025 Xtensive LLC.
1+
// Copyright (C) 2009-2026 Xtensive LLC.
22
// This code is distributed under MIT license terms.
33
// See the License.txt file in the project root for more information.
44
// Created by: Alexander Nikolaev
@@ -16,6 +16,7 @@
1616
using Xtensive.Orm.Model;
1717
using Xtensive.Orm.Tests.ObjectModel;
1818
using Xtensive.Orm.Tests.ObjectModel.ChinookDO;
19+
using PrefetchModel =Xtensive.Orm.Tests.Storage.Prefetch.Model;
1920

2021
namespace Xtensive.Orm.Tests.Storage.Prefetch
2122
{
@@ -39,7 +40,8 @@ protected override DomainConfiguration BuildConfiguration()
3940
{
4041
var config = base.BuildConfiguration();
4142
config.NamingConvention.NamespacePolicy = NamespacePolicy.AsIs;
42-
config.Types.RegisterCaching(typeof(Model.Offer).Assembly, typeof(Model.Offer).Namespace);
43+
// additonal types complementing Chinook model
44+
config.Types.RegisterCaching(typeof(PrefetchModel.Offer).Assembly, typeof(PrefetchModel.Offer).Namespace);
4345
return config;
4446
}
4547

@@ -619,7 +621,7 @@ public void ArgumentsTest()
619621
AssertEx.Throws<KeyNotFoundException>(() => session.Query.All<Track>()
620622
.Prefetch(t => t.PersistenceState)
621623
.ToList());
622-
var d = session.Query.Many<Model.OfferContainer>(EnumerableUtils.One(Key.Create<Model.OfferContainer>(Domain, 1)))
624+
var d = session.Query.Many<PrefetchModel.OfferContainer>(EnumerableUtils.One(Key.Create<PrefetchModel.OfferContainer>(Domain, 1)))
623625
.Prefetch(oc => oc.IntermediateOffer.AnotherContainer.RealOffer.Book)
624626
.ToList();
625627
}
@@ -639,7 +641,7 @@ public async Task ArgumentsAsyncTest()
639641
_ = Assert.ThrowsAsync<KeyNotFoundException>(async () => (await session.Query.All<Track>()
640642
.Prefetch(t => t.PersistenceState).ExecuteAsync())
641643
.ToList());
642-
var d = (await session.Query.Many<Model.OfferContainer>(EnumerableUtils.One(Key.Create<Model.OfferContainer>(Domain, 1)))
644+
var d = (await session.Query.Many<PrefetchModel.OfferContainer>(EnumerableUtils.One(Key.Create<PrefetchModel.OfferContainer>(Domain, 1)))
643645
.Prefetch(oc => oc.IntermediateOffer.AnotherContainer.RealOffer.Book).ExecuteAsync())
644646
.ToList();
645647
}
@@ -694,14 +696,14 @@ public void RootElementIsNullPrefetchTest()
694696
RemoveAllBooks();
695697
using (var session = Domain.OpenSession()) {
696698
using (var tx = session.OpenTransaction()) {
697-
_ = new Model.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
699+
_ = new PrefetchModel.Book { Title = new PrefetchModel.Title { Text = "T0" }, Category = "1" };
698700
tx.Complete();
699701
}
700702
using (var tx = session.OpenTransaction()) {
701-
var books = session.Query.All<Model.Book>().AsEnumerable()
702-
.Concat(EnumerableUtils.One<Model.Book>(null)).Prefetch(b => b.Title);
703-
var titleField = Domain.Model.Types[typeof(Model.Book)].Fields[nameof(Model.Book.Title)];
704-
var titleType = Domain.Model.Types[typeof(Model.Title)];
703+
var books = session.Query.All<PrefetchModel.Book>().AsEnumerable()
704+
.Concat(EnumerableUtils.One<PrefetchModel.Book>(null)).Prefetch(b => b.Title);
705+
var titleField = Domain.Model.Types[typeof(PrefetchModel.Book)].Fields[nameof(PrefetchModel.Book.Title)];
706+
var titleType = Domain.Model.Types[typeof(PrefetchModel.Title)];
705707
var count = 0;
706708
foreach (var book in books) {
707709
count++;
@@ -721,15 +723,15 @@ public async Task RootElementIsNullPrefetchAsyncTest()
721723
RemoveAllBooks();
722724
await using (var session = await Domain.OpenSessionAsync()) {
723725
await using (var tx = session.OpenTransaction()) {
724-
_ = new Model.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
726+
_ = new PrefetchModel.Book { Title = new PrefetchModel.Title { Text = "T0" }, Category = "1" };
725727
tx.Complete();
726728
}
727729

728730
await using (var tx = session.OpenTransaction()) {
729-
var books = session.Query.All<Model.Book>().AsEnumerable()
730-
.Concat(EnumerableUtils.One<Model.Book>(null)).Prefetch(b => b.Title).AsAsyncEnumerable();
731-
var titleField = Domain.Model.Types[typeof(Model.Book)].Fields[nameof(Model.Book.Title)];
732-
var titleType = Domain.Model.Types[typeof(Model.Title)];
731+
var books = session.Query.All<PrefetchModel.Book>().AsEnumerable()
732+
.Concat(EnumerableUtils.One<PrefetchModel.Book>(null)).Prefetch(b => b.Title).AsAsyncEnumerable();
733+
var titleField = Domain.Model.Types[typeof(PrefetchModel.Book)].Fields[nameof(PrefetchModel.Book.Title)];
734+
var titleType = Domain.Model.Types[typeof(PrefetchModel.Title)];
733735
var count = 0;
734736
await foreach (var book in books) {
735737
count++;
@@ -749,15 +751,15 @@ public void NestedPrefetchWhenChildElementIsNullTest()
749751
RemoveAllBooks();
750752
using (var session = Domain.OpenSession()) {
751753
using (var tx = session.OpenTransaction()) {
752-
_ = new Model.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
753-
_ = new Model.Book { Category = "2" };
754+
_ = new PrefetchModel.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
755+
_ = new PrefetchModel.Book { Category = "2" };
754756
tx.Complete();
755757
}
756758
using (var tx = session.OpenTransaction()) {
757-
var prefetcher = session.Query.All<Model.Book>()
759+
var prefetcher = session.Query.All<PrefetchModel.Book>()
758760
.Prefetch(b => b.Title.Book);
759-
var titleField = Domain.Model.Types[typeof(Model.Book)].Fields[nameof(Model.Book.Title)];
760-
var titleType = Domain.Model.Types[typeof(Model.Title)];
761+
var titleField = Domain.Model.Types[typeof(PrefetchModel.Book)].Fields[nameof(Model.Book.Title)];
762+
var titleType = Domain.Model.Types[typeof(PrefetchModel.Title)];
761763
foreach (var book in prefetcher) {
762764
var titleKey = book.GetReferenceKey(titleField);
763765
if (titleKey != null) {
@@ -774,16 +776,16 @@ public async Task NestedPrefetchWhenChildElementIsNullAsyncTest()
774776
RemoveAllBooks();
775777
await using (var session = await Domain.OpenSessionAsync()) {
776778
await using (var tx = session.OpenTransaction()) {
777-
_ = new Model.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
778-
_ = new Model.Book { Category = "2" };
779+
_ = new PrefetchModel.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
780+
_ = new PrefetchModel.Book { Category = "2" };
779781
tx.Complete();
780782
}
781783

782784
await using (var tx = session.OpenTransaction()) {
783-
var prefetcher = session.Query.All<Model.Book>()
785+
var prefetcher = session.Query.All<PrefetchModel.Book>()
784786
.Prefetch(b => b.Title.Book).AsAsyncEnumerable();
785-
var titleField = Domain.Model.Types[typeof(Model.Book)].Fields[nameof(Model.Book.Title)];
786-
var titleType = Domain.Model.Types[typeof(Model.Title)];
787+
var titleField = Domain.Model.Types[typeof(PrefetchModel.Book)].Fields[nameof(PrefetchModel.Book.Title)];
788+
var titleType = Domain.Model.Types[typeof(PrefetchModel.Title)];
787789
await foreach (var book in prefetcher) {
788790
var titleKey = book.GetReferenceKey(titleField);
789791
if (titleKey != null) {
@@ -800,14 +802,14 @@ public void NestedPrefetchWhenRootElementIsNullTest()
800802
RemoveAllBooks();
801803
using (var session = Domain.OpenSession()) {
802804
using (var tx = session.OpenTransaction()) {
803-
_ = new Model.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
805+
_ = new PrefetchModel.Book { Title = new PrefetchModel.Title { Text = "T0" }, Category = "1" };
804806
tx.Complete();
805807
}
806808
using (var tx = session.OpenTransaction()) {
807-
var books = session.Query.All<Model.Book>().AsEnumerable().Concat(EnumerableUtils.One<Model.Book>(null))
809+
var books = session.Query.All<PrefetchModel.Book>().AsEnumerable().Concat(EnumerableUtils.One<PrefetchModel.Book>(null))
808810
.Prefetch(b => b.Title.Book);
809-
var titleField = Domain.Model.Types[typeof (Model.Book)].Fields["Title"];
810-
var titleType = Domain.Model.Types[typeof (Model.Title)];
811+
var titleField = Domain.Model.Types[typeof (PrefetchModel.Book)].Fields["Title"];
812+
var titleType = Domain.Model.Types[typeof (PrefetchModel.Title)];
811813
var count = 0;
812814
foreach (var book in books) {
813815
count++;
@@ -829,15 +831,15 @@ public async Task NestedPrefetchWhenRootElementIsNullAsyncTest()
829831
RemoveAllBooks();
830832
await using (var session = await Domain.OpenSessionAsync()) {
831833
await using (var tx = session.OpenTransaction()) {
832-
_ = new Model.Book { Title = new Model.Title { Text = "T0" }, Category = "1" };
834+
_ = new PrefetchModel.Book { Title = new PrefetchModel.Title { Text = "T0" }, Category = "1" };
833835
tx.Complete();
834836
}
835837

836838
await using (var tx = session.OpenTransaction()) {
837-
var books = session.Query.All<Model.Book>().AsEnumerable().Concat(EnumerableUtils.One<Model.Book>(null))
839+
var books = session.Query.All<PrefetchModel.Book>().AsEnumerable().Concat(EnumerableUtils.One<PrefetchModel.Book>(null))
838840
.Prefetch(b => b.Title.Book).AsAsyncEnumerable();
839-
var titleField = Domain.Model.Types[typeof(Model.Book)].Fields[nameof(Model.Book.Title)];
840-
var titleType = Domain.Model.Types[typeof(Model.Title)];
841+
var titleField = Domain.Model.Types[typeof(PrefetchModel.Book)].Fields[nameof(PrefetchModel.Book.Title)];
842+
var titleType = Domain.Model.Types[typeof(PrefetchModel.Title)];
841843
var count = 0;
842844
await foreach (var book in books) {
843845
count++;
@@ -861,7 +863,7 @@ public void StructureFieldsPrefetchTest()
861863

862864
using (var session = Domain.OpenSession())
863865
using (var tx = session.OpenTransaction()) {
864-
var containers = session.Query.Many<Model.OfferContainer>(EnumerableUtils.One(containerKey))
866+
var containers = session.Query.Many<PrefetchModel.OfferContainer>(EnumerableUtils.One(containerKey))
865867
.Prefetch(oc => oc.RealOffer.Book)
866868
.Prefetch(oc => oc.IntermediateOffer.RealOffer.BookShop);
867869
foreach (var key in containers) {
@@ -879,7 +881,7 @@ public async Task StructureFieldsPrefetchAsyncTest()
879881

880882
await using (var session = await Domain.OpenSessionAsync())
881883
await using (var tx = session.OpenTransaction()) {
882-
var containers = session.Query.Many<Model.OfferContainer>(EnumerableUtils.One(containerKey))
884+
var containers = session.Query.Many<PrefetchModel.OfferContainer>(EnumerableUtils.One(containerKey))
883885
.Prefetch(oc => oc.RealOffer.Book)
884886
.Prefetch(oc => oc.IntermediateOffer.RealOffer.BookShop).AsAsyncEnumerable();
885887
await foreach (var key in containers) {
@@ -897,7 +899,7 @@ public void StructurePrefetchTest()
897899

898900
using (var session = Domain.OpenSession())
899901
using (var tx = session.OpenTransaction()) {
900-
var containers = session.Query.Many<Model.OfferContainer>(EnumerableUtils.One(containerKey))
902+
var containers = session.Query.Many<PrefetchModel.OfferContainer>(EnumerableUtils.One(containerKey))
901903
.Prefetch(oc => oc.IntermediateOffer);
902904
foreach (var key in containers) {
903905
PrefetchTestHelper.AssertOnlySpecifiedColumnsAreLoaded(containerKey, containerKey.TypeInfo, session,
@@ -914,7 +916,7 @@ public async Task StructurePrefetchAsyncTest()
914916

915917
await using (var session = await Domain.OpenSessionAsync())
916918
await using (var tx = session.OpenTransaction()) {
917-
var containers = session.Query.Many<Model.OfferContainer>(EnumerableUtils.One(containerKey))
919+
var containers = session.Query.Many<PrefetchModel.OfferContainer>(EnumerableUtils.One(containerKey))
918920
.Prefetch(oc => oc.IntermediateOffer).AsAsyncEnumerable();
919921
await foreach (var key in containers) {
920922
PrefetchTestHelper.AssertOnlySpecifiedColumnsAreLoaded(containerKey, containerKey.TypeInfo, session,
@@ -927,7 +929,7 @@ private void RemoveAllBooks()
927929
{
928930
using (var session = Domain.OpenSession())
929931
using (var tx = session.OpenTransaction()) {
930-
foreach (var book in session.Query.All<Model.Book>()) {
932+
foreach (var book in session.Query.All<PrefetchModel.Book>()) {
931933
book.Remove();
932934
}
933935
tx.Complete();

Orm/Xtensive.Orm.Tests/Storage/Prefetch/PrefetchWithSmallCacheTest.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// Copyright (C) 2003-2010 Xtensive LLC.
2-
// All rights reserved.
3-
// For conditions of distribution and use, see license.
1+
// Copyright (C) 2009-2026 Xtensive LLC.
2+
// This code is distributed under MIT license terms.
3+
// See the License.txt file in the project root for more information.
44
// Created by: Alexander Nikolaev
55
// Created: 2009.10.08
66

@@ -30,10 +30,8 @@ protected override DomainConfiguration BuildConfiguration()
3030
return config;
3131
}
3232

33-
[OneTimeSetUp]
34-
public override void TestFixtureSetUp()
33+
protected override void PopulateData()
3534
{
36-
base.TestFixtureSetUp();
3735
using (var session = Domain.OpenSession())
3836
using (var transactionScope = session.OpenTransaction()) {
3937
for (int i = 0; i < 111; i++)

0 commit comments

Comments
 (0)