public WhenUsingShardedServers() { const string server = "localhost"; const int port1 = 8079; const int port2 = 8081; path1 = GetPath("TestShardedDb1"); path2 = GetPath("TestShardedDb2"); NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(port1); NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(port2); company1 = new Company { Name = "Company1" }; company2 = new Company { Name = "Company2" }; server1 = GetNewServer(port1, path1); server2 = GetNewServer(port2, path2); shards = new List<IDocumentStore> { new DocumentStore { Identifier="Shard1", Url = "http://" + server +":"+port1}, new DocumentStore { Identifier="Shard2", Url = "http://" + server +":"+port2} }.ToDictionary(x => x.Identifier, x => x); shardResolution = MockRepository.GenerateStub<IShardResolutionStrategy>(); shardResolution.Stub(x => x.GenerateShardIdFor(company1)).Return("Shard1"); shardResolution.Stub(x => x.GenerateShardIdFor(company2)).Return("Shard2"); shardResolution.Stub(x => x.MetadataShardIdFor(company1)).Return("Shard1"); shardResolution.Stub(x => x.MetadataShardIdFor(company2)).Return("Shard1"); shardStrategy = new ShardStrategy(shards) { ShardResolutionStrategy = shardResolution }; }
public WhenUsingShardedServers() { const string server = "localhost"; const int port1 = 8079; const int port2 = 8081; company1 = new Company { Name = "Company1" }; company2 = new Company { Name = "Company2" }; server1 = GetNewServer(port1); server2 = GetNewServer(port2); shards = new List<IDocumentStore> { new DocumentStore { Identifier="Shard1", Url = "http://" + server +":"+port1}, new DocumentStore { Identifier="Shard2", Url = "http://" + server +":"+port2} }.ToDictionary(x => x.Identifier, x => x); shardResolution = MockRepository.GenerateStub<IShardResolutionStrategy>(); shardResolution.Stub(x => x.GenerateShardIdFor(Arg.Is(company1), Arg<ITransactionalDocumentSession>.Is.Anything)).Return("Shard1"); shardResolution.Stub(x => x.GenerateShardIdFor(Arg.Is(company2), Arg<ITransactionalDocumentSession>.Is.Anything)).Return("Shard2"); shardResolution.Stub(x => x.MetadataShardIdFor(company1)).Return("Shard1"); shardResolution.Stub(x => x.MetadataShardIdFor(company2)).Return("Shard1"); shardStrategy = new ShardStrategy(shards) { ShardResolutionStrategy = shardResolution }; }
public void CanGetSingleEntityFromCorrectShardedServer() { using (var documentStore = new ShardedDocumentStore(shardStrategy).Initialize()) using (var session = documentStore.OpenAsyncSession()) { //store item that goes in 2nd shard session.Store(company2); session.SaveChangesAsync().Wait(); //get it, should automagically retrieve from 2nd shard shardResolution.Stub(x => x.PotentialShardsFor(null)).IgnoreArguments().Return(new[] { "Shard2" }); var loadedCompany = session.LoadAsync <Company>(company2.Id).Result; Assert.NotNull(loadedCompany); Assert.Equal(company2.Name, loadedCompany.Name); } }
public void Can_get_single_entity_from_correct_sharded_server() { using (var documentStore = new ShardedDocumentStore(shardStrategy, shards).Initialize()) using (var session = documentStore.OpenSession()) { //store item that goes in 2nd shard session.Store(company2); session.SaveChanges(); //get it, should automagically retrieve from 2nd shard shardResolution.Stub(x => x.SelectShardIds(null)).IgnoreArguments().Return(new[] { "Shard2" }); var loadedCompany = session.Load <Company>(company2.Id); Assert.NotNull(loadedCompany); Assert.Equal(company2.Name, loadedCompany.Name); } }
public WhenUsingShardedServers() { const string server = "localhost"; const int port1 = 8079; const int port2 = 8081; path1 = GetPath("TestShardedDb1"); path2 = GetPath("TestShardedDb2"); NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(port1); NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(port2); company1 = new Company { Name = "Company1" }; company2 = new Company { Name = "Company2" }; server1 = GetNewServer(port1, path1); server2 = GetNewServer(port2, path2); shards = new List <IDocumentStore> { new DocumentStore { Identifier = "Shard1", Url = "http://" + server + ":" + port1 }, new DocumentStore { Identifier = "Shard2", Url = "http://" + server + ":" + port2 } }.ToDictionary(x => x.Identifier, x => x); shardResolution = MockRepository.GenerateStub <IShardResolutionStrategy>(); shardResolution.Stub(x => x.GenerateShardIdFor(Arg.Is(company1), Arg <ITransactionalDocumentSession> .Is.Anything)).Return("Shard1"); shardResolution.Stub(x => x.GenerateShardIdFor(Arg.Is(company2), Arg <ITransactionalDocumentSession> .Is.Anything)).Return("Shard2"); shardResolution.Stub(x => x.MetadataShardIdFor(company1)).Return("Shard1"); shardResolution.Stub(x => x.MetadataShardIdFor(company2)).Return("Shard1"); shardStrategy = new ShardStrategy(shards) { ShardResolutionStrategy = shardResolution }; }