Reject duplicate keys on the notifier.
Signed-off-by: Burcu Dogan <jbd@google.com> mend
This commit is contained in:
		| @@ -13,8 +13,12 @@ func TestNotifier(t *testing.T) { | ||||
| 	id1 := "1" | ||||
| 	id2 := "2" | ||||
|  | ||||
| 	s.Add(id1, ch1) | ||||
| 	s.Add(id2, ch2) | ||||
| 	if err := s.Add(id1, ch1); err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	if err := s.Add(id2, ch2); err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	s.m.Lock() | ||||
| 	if len(s.doneCh) != 2 { | ||||
| 		t.Fatalf("want 2 channels, got %d", len(s.doneCh)) | ||||
| @@ -43,7 +47,9 @@ func TestConcurrentNotifier(t *testing.T) { | ||||
| 	var chs []chan struct{} | ||||
| 	for i := 0; i < 8; i++ { | ||||
| 		ch := make(chan struct{}, 2) | ||||
| 		s.Add(i, ch) | ||||
| 		if err := s.Add(i, ch); err != nil { | ||||
| 			t.Fatal(err) | ||||
| 		} | ||||
| 		chs = append(chs, ch) | ||||
| 	} | ||||
| 	testCounter := make(map[interface{}]int) | ||||
| @@ -86,10 +92,26 @@ func TestAddToBlocked(t *testing.T) { | ||||
| 	go func() { | ||||
| 		// give some time to start first select | ||||
| 		time.Sleep(1 * time.Second) | ||||
| 		s.Add(id, ch) | ||||
| 		if err := s.Add(id, ch); err != nil { | ||||
| 			t.Fatal(err) | ||||
| 		} | ||||
| 		ch <- struct{}{} | ||||
| 	}() | ||||
| 	if got, want := <-s.Chan(), id; got != want { | ||||
| 		t.Fatalf("got %v; want %v", got, want) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestAddDuplicate(t *testing.T) { | ||||
| 	s := New() | ||||
| 	ch1 := make(chan struct{}, 1) | ||||
| 	ch2 := make(chan struct{}, 1) | ||||
|  | ||||
| 	if err := s.Add(1, ch1); err != nil { | ||||
| 		t.Fatalf("cannot add; err = %v", err) | ||||
| 	} | ||||
|  | ||||
| 	if err := s.Add(1, ch2); err == nil { | ||||
| 		t.Fatalf("duplicate keys are not allowed; but Add succeeded") | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Burcu Dogan
					Burcu Dogan