7
"github.com/juju/testing/httptesting"
9
"gopkg.in/juju/charm.v6-unstable"
10
"gopkg.in/juju/charmrepo.v2-unstable/csclient/params"
12
"gopkg.in/juju/charmstore.v5-unstable/internal/storetesting"
15
type BenchmarkSuite struct {
19
var _ = gc.Suite(&BenchmarkSuite{})
21
func (s *BenchmarkSuite) TestBenchmarkMeta(c *gc.C) {
22
s.addPublicCharmFromRepo(c, "wordpress", newResolvedURL("~charmers/precise/wordpress-23", 23))
23
srv := httptest.NewServer(s.srv)
25
url := srv.URL + storeURL("wordpress/meta/archive-size")
26
c.Logf("benchmark start")
27
resp, err := http.Get(url)
29
c.Fatalf("get failed: %v", err)
32
if resp.StatusCode != 200 {
33
c.Fatalf("response failed with code %v", resp.Status)
37
func (s *BenchmarkSuite) BenchmarkMeta(c *gc.C) {
38
s.addPublicCharmFromRepo(c, "wordpress", newResolvedURL("~charmers/precise/wordpress-23", 23))
39
srv := httptest.NewServer(s.srv)
41
url := srv.URL + storeURL("wordpress/meta/archive-size")
43
for i := 0; i < c.N; i++ {
44
resp, err := http.Get(url)
46
c.Fatalf("get failed: %v", err)
49
if resp.StatusCode != 200 {
50
c.Fatalf("response failed with code %v", resp.Status)
55
var benchmarkCharmRelatedAddCharms = map[string]charm.Charm{
56
"0 ~charmers/trusty/wordpress-0": storetesting.NewCharm(storetesting.RelationMeta(
57
"requires cache memcache",
60
"1 ~charmers/utopic/memcached-1": storetesting.NewCharm(storetesting.RelationMeta(
61
"provides cache memcache",
63
"2 ~charmers/utopic/memcached-2": storetesting.NewCharm(storetesting.RelationMeta(
64
"provides cache memcache",
66
"90 ~charmers/utopic/redis-90": storetesting.NewCharm(storetesting.RelationMeta(
67
"provides cache memcache",
69
"47 ~charmers/trusty/nfs-47": storetesting.NewCharm(storetesting.RelationMeta(
72
"42 ~charmers/precise/nfs-42": storetesting.NewCharm(storetesting.RelationMeta(
75
"47 ~charmers/precise/nfs-47": storetesting.NewCharm(storetesting.RelationMeta(
80
var benchmarkCharmRelatedExpectBody = params.RelatedResponse{
81
Provides: map[string][]params.EntityResult{
83
Id: charm.MustParseURL("utopic/memcached-1"),
84
Meta: map[string]interface{}{
85
"id-name": params.IdNameResponse{"memcached"},
88
Id: charm.MustParseURL("utopic/memcached-2"),
89
Meta: map[string]interface{}{
90
"id-name": params.IdNameResponse{"memcached"},
93
Id: charm.MustParseURL("utopic/redis-90"),
94
Meta: map[string]interface{}{
95
"id-name": params.IdNameResponse{"redis"},
99
Id: charm.MustParseURL("precise/nfs-42"),
100
Meta: map[string]interface{}{
101
"id-name": params.IdNameResponse{"nfs"},
104
Id: charm.MustParseURL("precise/nfs-47"),
105
Meta: map[string]interface{}{
106
"id-name": params.IdNameResponse{"nfs"},
109
Id: charm.MustParseURL("trusty/nfs-47"),
110
Meta: map[string]interface{}{
111
"id-name": params.IdNameResponse{"nfs"},
117
func (s *BenchmarkSuite) BenchmarkCharmRelated(c *gc.C) {
118
s.addCharms(c, benchmarkCharmRelatedAddCharms)
119
expectBody := benchmarkCharmRelatedExpectBody
120
srv := httptest.NewServer(s.srv)
122
url := srv.URL + storeURL("trusty/wordpress-0/meta/charm-related?include=id-name")
124
for i := 0; i < c.N; i++ {
125
httptesting.AssertJSONCall(c, httptesting.JSONCallParams{
128
ExpectStatus: http.StatusOK,
129
ExpectBody: expectBody,
134
func (s *BenchmarkSuite) TestCharmRelated(c *gc.C) {
135
s.addCharms(c, benchmarkCharmRelatedAddCharms)
136
expectBody := benchmarkCharmRelatedExpectBody
137
srv := httptest.NewServer(s.srv)
139
url := srv.URL + storeURL("trusty/wordpress-0/meta/charm-related?include=id-name")
140
httptesting.AssertJSONCall(c, httptesting.JSONCallParams{
143
ExpectStatus: http.StatusOK,
144
ExpectBody: expectBody,