github.com/gunjan5/docker@v1.8.2/integration-cli/docker_api_service_test.go (about) 1 // +build experimental 2 3 package main 4 5 import ( 6 "encoding/json" 7 "fmt" 8 "net/http" 9 10 "github.com/go-check/check" 11 ) 12 13 func isServiceAvailable(c *check.C, name string, network string) bool { 14 status, body, err := sockRequest("GET", "/services", nil) 15 c.Assert(status, check.Equals, http.StatusOK) 16 c.Assert(err, check.IsNil) 17 18 var inspectJSON []struct { 19 Name string 20 ID string 21 Network string 22 } 23 if err = json.Unmarshal(body, &inspectJSON); err != nil { 24 c.Fatalf("unable to unmarshal response body: %v", err) 25 } 26 for _, s := range inspectJSON { 27 if s.Name == name && s.Network == network { 28 return true 29 } 30 } 31 return false 32 33 } 34 35 func isServiceNetworkAvailable(c *check.C, name string) bool { 36 status, body, err := sockRequest("GET", "/networks", nil) 37 c.Assert(status, check.Equals, http.StatusOK) 38 c.Assert(err, check.IsNil) 39 40 var inspectJSON []struct { 41 Name string 42 ID string 43 Type string 44 } 45 if err = json.Unmarshal(body, &inspectJSON); err != nil { 46 c.Fatalf("unable to unmarshal response body: %v", err) 47 } 48 for _, n := range inspectJSON { 49 if n.Name == name { 50 return true 51 } 52 } 53 return false 54 55 } 56 57 func (s *DockerSuite) TestServiceApiCreateDelete(c *check.C) { 58 name := "testnetwork" 59 config := map[string]interface{}{ 60 "name": name, 61 "network_type": "bridge", 62 } 63 64 status, resp, err := sockRequest("POST", "/networks", config) 65 c.Assert(status, check.Equals, http.StatusCreated) 66 c.Assert(err, check.IsNil) 67 68 if !isServiceNetworkAvailable(c, name) { 69 c.Fatalf("Network %s not found", name) 70 } 71 72 var nid string 73 err = json.Unmarshal(resp, &nid) 74 if err != nil { 75 c.Fatal(err) 76 } 77 78 sname := "service1" 79 sconfig := map[string]interface{}{ 80 "name": sname, 81 "network_name": name, 82 } 83 84 status, resp, err = sockRequest("POST", "/services", sconfig) 85 c.Assert(status, check.Equals, http.StatusCreated) 86 c.Assert(err, check.IsNil) 87 88 if !isServiceAvailable(c, sname, name) { 89 c.Fatalf("Service %s.%s not found", sname, name) 90 } 91 92 var id string 93 err = json.Unmarshal(resp, &id) 94 if err != nil { 95 c.Fatal(err) 96 } 97 98 status, _, err = sockRequest("DELETE", fmt.Sprintf("/services/%s", id), nil) 99 c.Assert(status, check.Equals, http.StatusOK) 100 c.Assert(err, check.IsNil) 101 102 if isServiceAvailable(c, sname, name) { 103 c.Fatalf("Service %s.%s not deleted", sname, name) 104 } 105 106 status, _, err = sockRequest("DELETE", fmt.Sprintf("/networks/%s", nid), nil) 107 c.Assert(status, check.Equals, http.StatusOK) 108 c.Assert(err, check.IsNil) 109 110 if isNetworkAvailable(c, name) { 111 c.Fatalf("Network %s not deleted", name) 112 } 113 }