func (s *S) TestRecreateBsContainersErrorInSomeContainers(c *check.C) { _, err := nodecontainer.InitializeBS() c.Assert(err, check.IsNil) p, err := dockertest.StartMultipleServersCluster() c.Assert(err, check.IsNil) defer p.Destroy() nodes, err := p.Cluster().Nodes() c.Assert(err, check.IsNil) c.Assert(nodes, check.HasLen, 2) servers := p.Servers() servers[0].PrepareFailure("failure-create", "/containers/create") defer servers[1].ResetFailure("failure-create") var buf safe.Buffer err = recreateContainers(p, &buf) c.Assert(err, check.ErrorMatches, `(?s)API error \(400\): failure-create.*failed to create container in .* \[.*\].*`) sort.Sort(cluster.NodeList(nodes)) client, err := nodes[0].Client() c.Assert(err, check.IsNil) containers, err := client.ListContainers(docker.ListContainersOptions{All: true}) c.Assert(err, check.IsNil) c.Assert(containers, check.HasLen, 0) client, err = nodes[1].Client() c.Assert(err, check.IsNil) containers, err = client.ListContainers(docker.ListContainersOptions{All: true}) c.Assert(err, check.IsNil) c.Assert(containers, check.HasLen, 1) container, err := client.InspectContainer(containers[0].ID) c.Assert(err, check.IsNil) c.Assert(container.Name, check.Equals, nodecontainer.BsDefaultName) }
func testStorageStoreRetrieveNodes(storage cluster.Storage, t *testing.T) { node1 := cluster.Node{Address: "my-addr-1"} defer storage.RemoveNode("my-addr-1") err := storage.StoreNode(node1) assertIsNil(err, t) node2 := cluster.Node{Address: "my-addr-2", Metadata: map[string]string{"foo": "bar"}} defer storage.RemoveNode("my-addr-2") err = storage.StoreNode(node2) assertIsNil(err, t) nodes, err := storage.RetrieveNodes() assertIsNil(err, t) if len(nodes) != 2 { t.Fatalf("unexpected number of nodes, expected 2, got: %d", len(nodes)) } sort.Sort(cluster.NodeList(nodes)) if nodes[0].Address != node1.Address || nodes[1].Address != node2.Address { t.Errorf("unexpected nodes: %#v", nodes) } if !reflect.DeepEqual(node2.Metadata, nodes[1].Metadata) { t.Errorf("unexpected node metadata. expected: %#v got: %#v", node2.Metadata, nodes[1].Metadata) } if !reflect.DeepEqual(nodes[0].Metadata, map[string]string{}) { t.Errorf("unexpected node metadata. expected empty map got: %#v", nodes[0].Metadata) } }
func (s *S) TestRecreateBsContainersErrorInSomeContainers(c *check.C) { p, err := s.startMultipleServersClusterSeggregated() c.Assert(err, check.IsNil) nodes, err := p.getCluster().Nodes() c.Assert(err, check.IsNil) c.Assert(nodes, check.HasLen, 2) s.server.PrepareFailure("failure-create", "/containers/create") defer s.server.ResetFailure("failure-create") err = p.recreateBsContainers() c.Assert(err, check.ErrorMatches, `(?s).*failed to create container in .* \[pool1\]: API error \(400\): failure-create.*`) sort.Sort(cluster.NodeList(nodes)) client, err := nodes[0].Client() c.Assert(err, check.IsNil) containers, err := client.ListContainers(docker.ListContainersOptions{All: true}) c.Assert(err, check.IsNil) c.Assert(containers, check.HasLen, 0) client, err = nodes[1].Client() c.Assert(err, check.IsNil) containers, err = client.ListContainers(docker.ListContainersOptions{All: true}) c.Assert(err, check.IsNil) c.Assert(containers, check.HasLen, 1) container, err := client.InspectContainer(containers[0].ID) c.Assert(err, check.IsNil) c.Assert(container.Name, check.Equals, "big-sibling") }
func testStorageStoreRetrieveNodesForMetadata(storage cluster.Storage, t *testing.T) { node1 := cluster.Node{Address: "my-addr-1", Metadata: map[string]string{ "region": "reg1", "foo": "bar", }} err := storage.StoreNode(node1) assertIsNil(err, t) defer storage.RemoveNode("my-addr-1") node2 := cluster.Node{Address: "my-addr-2", Metadata: map[string]string{ "region": "reg2", "foo": "bar", }} err = storage.StoreNode(node2) assertIsNil(err, t) defer storage.RemoveNode("my-addr-2") nodes, err := storage.RetrieveNodesByMetadata(map[string]string{"region": "reg2"}) assertIsNil(err, t) if len(nodes) != 1 { t.Fatalf("unexpected nodes len: %d", len(nodes)) } if nodes[0].Address != node2.Address { t.Errorf("unexpected node: %s", nodes[0].Address) } if !reflect.DeepEqual(node2.Metadata, nodes[0].Metadata) { t.Errorf("unexpected node metadata. expected: %#v got: %#v", node2.Metadata, nodes[0].Metadata) } nodes, err = storage.RetrieveNodesByMetadata(map[string]string{"foo": "bar"}) assertIsNil(err, t) if len(nodes) != 2 { t.Fatalf("unexpected nodes len: %d", len(nodes)) } sort.Sort(cluster.NodeList(nodes)) if nodes[0].Address != node1.Address || nodes[1].Address != node2.Address { t.Errorf("unexpected nodes: %#v", nodes) } if !reflect.DeepEqual(node1.Metadata, nodes[0].Metadata) { t.Errorf("unexpected node metadata. expected: %#v got: %#v", node1.Metadata, nodes[0].Metadata) } if !reflect.DeepEqual(node2.Metadata, nodes[1].Metadata) { t.Errorf("unexpected node metadata. expected: %#v got: %#v", node2.Metadata, nodes[1].Metadata) } }