Skip to content

Commit 3116637

Browse files
committed
Adds test for StorageNodeManager API
1 parent 52f3ab2 commit 3116637

File tree

1 file changed

+215
-0
lines changed

1 file changed

+215
-0
lines changed
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using NUnit.Framework;
5+
using Xtensive.Orm.Configuration;
6+
using Xtensive.Orm.Providers;
7+
8+
namespace Xtensive.Orm.Tests.Storage.Multinode
9+
{
10+
public class StorageNodeManagerTest : AutoBuildTest
11+
{
12+
[HierarchyRoot]
13+
public class TestEntity : Entity
14+
{
15+
[Field, Key]
16+
public int Id { get; private set; }
17+
}
18+
19+
private readonly List<string> NodesToClear = new List<string>();
20+
21+
protected override void CheckRequirements()
22+
{
23+
Require.ProviderIs(StorageProvider.SqlServer);
24+
}
25+
26+
protected override DomainConfiguration BuildConfiguration()
27+
{
28+
var config = base.BuildConfiguration();
29+
config.Types.Register(typeof(TestEntity));
30+
config.DefaultSchema = "dbo";
31+
return config;
32+
}
33+
34+
[SetUp]
35+
public void SetUp()
36+
{
37+
NodesToClear.Clear();
38+
}
39+
40+
[TearDown]
41+
public void TearDown()
42+
{
43+
foreach (var nodeName in NodesToClear) {
44+
_ = Domain.StorageNodeManager.RemoveNode(nodeName);
45+
}
46+
}
47+
48+
[Test]
49+
public void AddUniqueNodeTest()
50+
{
51+
var nodeConfiguration = GetBaseNodeConfig();
52+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
53+
var result = Domain.StorageNodeManager.AddNode(nodeConfiguration);
54+
Assert.That(result, Is.True);
55+
}
56+
57+
[Test]
58+
public void AddAlreadyExistingTest()
59+
{
60+
var nodeConfiguration = GetBaseNodeConfig();
61+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
62+
_ = Domain.StorageNodeManager.AddNode(nodeConfiguration);
63+
64+
var sameConfig = (NodeConfiguration)nodeConfiguration.Clone();
65+
var result = Domain.StorageNodeManager.AddNode(sameConfig);
66+
Assert.That(result, Is.False);
67+
}
68+
69+
[Test]
70+
public void AddNodeWithNullNameTest()
71+
{
72+
var nodeConfiguration = new NodeConfiguration() { UpgradeMode = DomainUpgradeMode.Recreate };
73+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
74+
_ = Assert.Throws<InvalidOperationException>(() => Domain.StorageNodeManager.AddNode(nodeConfiguration));
75+
}
76+
77+
[Test]
78+
public void AddNodeWithEmptyNameTest()
79+
{
80+
var nodeConfiguration = new NodeConfiguration(string.Empty) { UpgradeMode = DomainUpgradeMode.Recreate };
81+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
82+
_ = Assert.Throws<InvalidOperationException>(() => Domain.StorageNodeManager.AddNode(nodeConfiguration));
83+
}
84+
85+
[Test]
86+
public void AddNodeWithNullConfigTest()
87+
{
88+
_ = Assert.Throws<ArgumentNullException>(() => Domain.StorageNodeManager.AddNode(null));
89+
}
90+
91+
[Test]
92+
public void AddNodeForMultidatabaseDomainTest()
93+
{
94+
var nodeConfiguration = new NodeConfiguration() { UpgradeMode = DomainUpgradeMode.Recreate };
95+
nodeConfiguration.DatabaseMapping.Add("DO-Tests", "DO-Tests-1");
96+
_ = Assert.Throws<InvalidOperationException>(() => Domain.StorageNodeManager.AddNode(nodeConfiguration));
97+
}
98+
99+
[Test]
100+
public void GetNodeByNullStringTest()
101+
{
102+
_ = Assert.Throws<InvalidOperationException>(() => Domain.StorageNodeManager.GetNode(null));
103+
}
104+
105+
[Test]
106+
public void GetNodeByEmptyStringTest()
107+
{
108+
var nodeConfiguration = GetBaseNodeConfig();
109+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
110+
var result = Domain.StorageNodeManager.AddNode(nodeConfiguration);
111+
Assert.That(result, Is.True);
112+
113+
var node = Domain.StorageNodeManager.GetNode(string.Empty);
114+
115+
Assert.That(node, Is.Not.Null);
116+
Assert.That(node.Id, Is.Not.EqualTo(nodeConfiguration.NodeId));
117+
}
118+
119+
[Test]
120+
public void GetNodeByExistingNodeNameTest()
121+
{
122+
var nodeConfiguration = GetBaseNodeConfig();
123+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
124+
var result = Domain.StorageNodeManager.AddNode(nodeConfiguration);
125+
Assert.That(result, Is.True);
126+
127+
var node = Domain.StorageNodeManager.GetNode(nodeConfiguration.NodeId);
128+
129+
Assert.That(node, Is.Not.Null);
130+
Assert.That(node.Id, Is.EqualTo(nodeConfiguration.NodeId));
131+
}
132+
133+
[Test]
134+
public void GetNodeWhichDoesntExistTest()
135+
{
136+
var nodeConfiguration = GetBaseNodeConfig();
137+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
138+
var result = Domain.StorageNodeManager.AddNode(nodeConfiguration);
139+
Assert.That(result, Is.True);
140+
141+
var node = Domain.StorageNodeManager.GetNode(nodeConfiguration.NodeId + "dummy");
142+
143+
Assert.That(node, Is.Null);
144+
}
145+
146+
[Test]
147+
public void RemoveNodeWhichDoesntExistTest()
148+
{
149+
var result = Domain.StorageNodeManager.RemoveNode("dummy");
150+
Assert.That(result, Is.False);
151+
}
152+
153+
[Test]
154+
public void RemoveExistingNode()
155+
{
156+
var nodeConfiguration = GetBaseNodeConfig();
157+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
158+
var result = Domain.StorageNodeManager.AddNode(nodeConfiguration);
159+
Assert.That(result, Is.True);
160+
161+
result = Domain.StorageNodeManager.RemoveNode(nodeConfiguration.NodeId);
162+
Assert.That(result, Is.True);
163+
}
164+
165+
[Test]
166+
public void GetOrAddByConfigWithNullNameTest()
167+
{
168+
var nodeConfiguration = new NodeConfiguration() { UpgradeMode = DomainUpgradeMode.Recreate };
169+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
170+
_ = Assert.Throws<InvalidOperationException>(() => Domain.StorageNodeManager.GetOrAddNode(nodeConfiguration));
171+
}
172+
173+
[Test]
174+
public void GetOrAddByConfigWithEmptyNameTest()
175+
{
176+
var nodeConfiguration = new NodeConfiguration(string.Empty) { UpgradeMode = DomainUpgradeMode.Recreate };
177+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
178+
_ = Assert.Throws<InvalidOperationException>(() => Domain.StorageNodeManager.GetOrAddNode(nodeConfiguration));
179+
}
180+
181+
[Test]
182+
public void GetOrAddByConfigOfExistingNodeTest()
183+
{
184+
var nodeConfiguration = GetBaseNodeConfig();
185+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
186+
var result = Domain.StorageNodeManager.AddNode(nodeConfiguration);
187+
Assert.That(result, Is.True);
188+
var existingNode = Domain.StorageNodeManager.GetNode(nodeConfiguration.NodeId);
189+
190+
var node = Domain.StorageNodeManager.GetOrAddNode((NodeConfiguration)nodeConfiguration.Clone());
191+
Assert.That(node, Is.EqualTo(existingNode));
192+
}
193+
194+
[Test]
195+
public void GetOrAddByConfigOfAbsentNodeTest()
196+
{
197+
var nodeConfiguration = GetBaseNodeConfig();
198+
nodeConfiguration.SchemaMapping.Add("dbo", "Model1");
199+
var existingNode = Domain.StorageNodeManager.GetNode(nodeConfiguration.NodeId);
200+
Assert.That(existingNode, Is.Null);
201+
202+
var node = Domain.StorageNodeManager.GetOrAddNode((NodeConfiguration) nodeConfiguration.Clone());
203+
Assert.That(node, Is.Not.Null);
204+
}
205+
206+
private NodeConfiguration GetBaseNodeConfig()
207+
{
208+
var nodeConfiguration = new NodeConfiguration(Guid.NewGuid().ToString()) {
209+
UpgradeMode = DomainUpgradeMode.Recreate
210+
};
211+
NodesToClear.Add(nodeConfiguration.NodeId);
212+
return nodeConfiguration;
213+
}
214+
}
215+
}

0 commit comments

Comments
 (0)