public void SimpleTwoTwoEach() { Func <SDChaindcode, SDEndorserState> es = ServiceDiscovery.ENDORSEMENT_SELECTION_LEAST_REQUIRED_BLOCKHEIGHT; List <SDLayout> lol = new List <SDLayout>(); SDLayout sdLayout = new SDLayout(); List <SDEndorser> sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org1", "localhost:80", 20)); sdl.Add(new MockSDEndorser("org1", "localhost:81", 20)); sdLayout.AddGroup("G1", 2, sdl); sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org2", "otherhost:90", 20)); sdl.Add(new MockSDEndorser("org2", "otherhost:91", 20)); sdLayout.AddGroup("G2", 2, sdl); lol.Add(sdLayout); SDChaindcode cc = new SDChaindcode("fakecc", lol); SDEndorserState sdEndorserState = es(cc); List <SDEndorser> sdEndorsers = sdEndorserState.SDEndorsers; Assert.AreEqual(4, sdEndorsers.Count); Assert.IsTrue(sdLayout == sdEndorserState.PickedLayout); Assert.AreEqual(FilterByEndpoint(sdEndorsers, "localhost").Count, 2); Assert.AreEqual(FilterByEndpoint(sdEndorsers, "otherhost").Count, 2); }
public void simpleOneTwoEachRandom() { Func <SDChaindcode, SDEndorserState> es = ServiceDiscovery.ENDORSEMENT_SELECTION_RANDOM; List <SDLayout> lol = new List <SDLayout>(); SDLayout sdLayout = new SDLayout(); List <SDEndorser> sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org1", "localhost:80", 20)); sdl.Add(new MockSDEndorser("org1", "localhost:81", 20)); sdLayout.AddGroup("G1", 1, sdl); sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org2", "otherhost:90", 20)); sdl.Add(new MockSDEndorser("org2", "otherhost:91", 20)); sdLayout.AddGroup("G2", 2, sdl); lol.Add(sdLayout); SDChaindcode cc = new SDChaindcode("fakecc", lol); for (int i = 64; i > 0; --i) { SDEndorserState sdEndorserState = es(cc); List <SDEndorser> sdEndorsers = sdEndorserState.SDEndorsers; Assert.AreEqual(3, sdEndorsers.Count); Assert.IsTrue(sdLayout == sdEndorserState.PickedLayout); Assert.AreEqual(FilterByEndpoint(sdEndorsers, "localhost").Count, 1); Assert.AreEqual(FilterByEndpoint(sdEndorsers, "otherhost").Count, 2); } }
public void twoLayoutTwoTwoEachExtrasCommon() { Func <SDChaindcode, SDEndorserState> es = ServiceDiscovery.ENDORSEMENT_SELECTION_LEAST_REQUIRED_BLOCKHEIGHT; List <SDLayout> lol = new List <SDLayout>(); SDLayout sdLayout = new SDLayout(); List <SDEndorser> sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org1", "localhost:80", 20)); sdl.Add(new MockSDEndorser("org1", "localhost:81", 20)); sdl.Add(new MockSDEndorser("org1", "localhost:83", 20)); sdLayout.AddGroup("G1", 3, sdl); // << 3 needed sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org2", "otherhost:93", 20)); sdl.Add(new MockSDEndorser("org2", "otherhost:90", 20)); sdl.Add(new MockSDEndorser("org1", "commonHost:82", 20)); sdLayout.AddGroup("G2", 2, sdl); lol.Add(sdLayout); sdLayout = new SDLayout(); // another layout the above needs 3 sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org1", "l2localhost:80", 20)); sdl.Add(new MockSDEndorser("org1", "l2localhost:81", 20)); sdl.Add(new MockSDEndorser("org1", "l2commonHost:82", 20)); sdLayout.AddGroup("G1", 2, sdl); sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org2", "l2otherhost:93", 20)); sdl.Add(new MockSDEndorser("org2", "l2otherhost:90", 20)); sdl.Add(new MockSDEndorser("org1", "l2commonHost:82", 20)); sdLayout.AddGroup("G2", 2, sdl); lol.Add(sdLayout); SDChaindcode cc = new SDChaindcode("fakecc", lol); SDEndorserState sdEndorserState = es(cc); List <SDEndorser> sdEndorsers = sdEndorserState.SDEndorsers; Assert.AreEqual(3, sdEndorsers.Count); Assert.IsTrue(sdLayout == sdEndorserState.PickedLayout); Assert.AreEqual(FilterByEndpoint(sdEndorsers, "l2localhost").Count, 1); Assert.AreEqual(FilterByEndpoint(sdEndorsers, "l2otherhost").Count, 1); Assert.AreEqual(FilterByEndpoint(sdEndorsers, "l2commonHost").Count, 1); }
public void twoLayoutTwoTwoEachExtrasCommonRandom() { Func <SDChaindcode, SDEndorserState> es = ServiceDiscovery.ENDORSEMENT_SELECTION_RANDOM; List <SDLayout> lol = new List <SDLayout>(); SDLayout sdLayout = new SDLayout(); List <SDEndorser> sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org1", "localhost:80", 20)); sdl.Add(new MockSDEndorser("org1", "localhost:81", 20)); sdl.Add(new MockSDEndorser("org1", "localhost:83", 20)); sdLayout.AddGroup("G1", 3, sdl); // << 3 needed sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org2", "otherhost:93", 20)); sdl.Add(new MockSDEndorser("org2", "otherhost:90", 20)); sdl.Add(new MockSDEndorser("org2", "otherhost:82", 20)); sdLayout.AddGroup("G2", 2, sdl); lol.Add(sdLayout); sdLayout = new SDLayout(); // another layout the above needs 3 sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org1", "l2localhost:80", 20)); sdl.Add(new MockSDEndorser("org1", "l2localhost:81", 20)); sdl.Add(new MockSDEndorser("org1", "l2localhost:82", 20)); sdLayout.AddGroup("G1", 1, sdl); sdl = new List <SDEndorser>(); sdl.Add(new MockSDEndorser("org2", "l2otherhost:93", 20)); sdl.Add(new MockSDEndorser("org2", "l2otherhost:90", 20)); sdl.Add(new MockSDEndorser("org1", "l2otherhost:82", 20)); sdLayout.AddGroup("G2", 2, sdl); lol.Add(sdLayout); SDChaindcode cc = new SDChaindcode("fakecc", lol); for (int i = 64; i > 0; --i) { SDEndorserState sdEndorserState = es(cc); List <SDEndorser> sdEndorsers = sdEndorserState.SDEndorsers; Assert.IsTrue(FilterByEndpoint(sdEndorsers, "localhost").Count == 3 && FilterByEndpoint(sdEndorsers, "otherhost").Count == 2 || FilterByEndpoint(sdEndorsers, "l2localhost").Count == 1 && FilterByEndpoint(sdEndorsers, "l2otherhost").Count == 2); } }