Exemplo n.º 1
0
func parallelAdd(t *testing.T, h *cart.Handler,
	wg *sync.WaitGroup,
	data chan map[uint32]map[uint32]uint32) {

	basket := make(map[uint32]map[uint32]uint32)
	w := httptest.NewRecorder()
	var slice []tuple

	for i := 0; i <= NumberOfThreadIterations; i++ {
		var item uint32 = uint32(rand.Intn(200))
		var customer uint32 = uint32(rand.Intn(100))

		i := tuple{customer, item}
		slice = append(slice, i)
	}

	for _, pair := range slice {
		r := modRequest(t, "add", pair.customer, pair.item)
	retry:
		h.Mod(cart.AddToSet)(w, r)

		if w.Code == 503 {
			goto retry
		}

		if basket[pair.customer] == nil {
			basket[pair.customer] = make(map[uint32]uint32)
		}

		basket[pair.customer][pair.item]++
		if !strings.HasPrefix(w.Body.String(), "OK") {
			t.Fatalf("expected `OK`, got `%s`", w.Body.String())
		}
	}

	data <- basket
	wg.Done()
}