Skip to content

Commit

Permalink
Insert and Update offers
Browse files Browse the repository at this point in the history
  • Loading branch information
henrod committed Mar 17, 2017
1 parent 1fb8155 commit a6f3021
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 8 deletions.
35 changes: 27 additions & 8 deletions bench/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,21 @@ func createGame(db *runner.Connection) (*models.Game, error) {
}

func createOffers(db *runner.Connection, game *models.Game, numberOfOffers int) ([]*models.Offer, error) {
var offers []*models.Offer
var err error
offers := getOffers(game, numberOfOffers)

for _, offer := range offers {
offer, err = models.InsertOffer(*db, offer, nil)
if err != nil {
return nil, err
}
}

return offers, nil
}

func getOffers(game *models.Game, numberOfOffers int) []*models.Offer {
var offers []*models.Offer

for i := 0; i < numberOfOffers; i++ {
offer := &models.Offer{
Expand All @@ -68,15 +81,10 @@ func createOffers(db *runner.Connection, game *models.Game, numberOfOffers int)
ProductID: "tfg.com.sample",
Contents: dat.JSON([]byte(`{"x": 1}`)),
}
offer, err = models.InsertOffer(*db, offer, nil)
if err != nil {
return nil, err
}

offers = append(offers, offer)
}

return offers, nil
return offers
}

func get(url string) (*http.Response, error) {
Expand Down Expand Up @@ -123,9 +131,20 @@ func validateResp(res *http.Response, err error) {
if err != nil {
panic(err)
}
if res.StatusCode != 200 {
if res.StatusCode != 200 && res.StatusCode != 201 {
bts, _ := ioutil.ReadAll(res.Body)
fmt.Printf("Request failed with status code %d\n", res.StatusCode)
panic(string(bts))
}
}

func validateRespOhNo(res *http.Response, err error, url string) {
if err != nil {
panic(err)
}
if res.StatusCode != 200 && res.StatusCode != 201 {
bts, _ := ioutil.ReadAll(res.Body)
fmt.Printf("Request failed with status code %d and url %s\n", res.StatusCode, url)
panic(string(bts))
}
}
70 changes: 70 additions & 0 deletions bench/offer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,73 @@ func BenchmarkListOffers(b *testing.B) {
offerResponse = res
}
}

func BenchmarkInsertOffer(b *testing.B) {
db, err := GetPerfDB()
if err != nil {
panic(err.Error())
}

game, err := createGame(&db)
if err != nil {
panic(err.Error())
}
offers := getOffers(game, b.N)

b.ResetTimer()

for _, offer := range offers {
route := getRoute("/offers")
res, err := postTo(route, map[string]interface{}{
"gameId": offer.GameID,
"name": offer.Name,
"period": offer.Period,
"frequency": offer.Frequency,
"trigger": offer.Trigger,
"placement": offer.Placement,
"productId": offer.ProductID,
"contents": offer.Contents,
})
validateResp(res, err)
res.Body.Close()

offerResponse = res
}
}

func BenchmarkUpdateOffer(b *testing.B) {
db, err := GetPerfDB()
if err != nil {
panic(err.Error())
}

game, err := createGame(&db)
if err != nil {
panic(err.Error())
}

offers, err := createOffers(&db, game, b.N)
if err != nil {
panic(err.Error())
}

b.ResetTimer()

for _, offer := range offers {
route := getRoute(fmt.Sprintf("/offers/%s", offer.ID))
res, err := putTo(route, map[string]interface{}{
"gameId": offer.GameID,
"name": fmt.Sprintf("%s-new", offer.Name),
"period": offer.Period,
"frequency": offer.Frequency,
"trigger": offer.Trigger,
"placement": offer.Placement,
"productId": offer.ProductID,
"contents": offer.Contents,
})
validateRespOhNo(res, err, route)
res.Body.Close()

offerResponse = res
}
}

0 comments on commit a6f3021

Please sign in to comment.