From 701d1ab638b23c24877fc41824add66232446676 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Thu, 2 Feb 2017 09:32:00 -0500 Subject: Updating server dependancies (#5249) --- .../nicksnyder/go-i18n/i18n/bundle/bundle_test.go | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go') diff --git a/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go b/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go index b241ad1d4..da3830a79 100644 --- a/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go +++ b/vendor/github.com/nicksnyder/go-i18n/i18n/bundle/bundle_test.go @@ -2,6 +2,8 @@ package bundle import ( "fmt" + "strconv" + "sync" "testing" "reflect" @@ -160,6 +162,59 @@ func TestTfuncAndLanguage(t *testing.T) { } } +func TestConcurrent(t *testing.T) { + b := New() + // bootstrap bundle + translationID := "translation_id" // +1 + englishLanguage := languageWithTag("en-US") + addFakeTranslation(t, b, englishLanguage, translationID) + + tf, err := b.Tfunc(englishLanguage.Tag) + if err != nil { + t.Errorf("Tfunc(%v) = error{%q}; expected no error", []string{englishLanguage.Tag}, err) + } + + const iterations = 1000 + var wg sync.WaitGroup + wg.Add(iterations) + + // Using go routines insert 1000 ints into our map. + go func() { + for i := 0; i < iterations/2; i++ { + // Add item to map. + translationID := strconv.FormatInt(int64(i), 10) + addFakeTranslation(t, b, englishLanguage, translationID) + + // Retrieve item from map. + tf(translationID) + + wg.Done() + } // Call go routine with current index. + }() + + go func() { + for i := iterations / 2; i < iterations; i++ { + // Add item to map. + translationID := strconv.FormatInt(int64(i), 10) + addFakeTranslation(t, b, englishLanguage, translationID) + + // Retrieve item from map. + tf(translationID) + + wg.Done() + } // Call go routine with current index. + }() + + // Wait for all go routines to finish. + wg.Wait() + + // Make sure map contains 1000+1 elements. + count := len(b.Translations()[englishLanguage.Tag]) + if count != iterations+1 { + t.Error("Expecting 1001 elements, got", count) + } +} + func addFakeTranslation(t *testing.T, b *Bundle, lang *language.Language, translationID string) string { translation := fakeTranslation(lang, translationID) b.AddTranslation(lang, testNewTranslation(t, map[string]interface{}{ -- cgit v1.2.3-1-g7c22