Expect(manager.RegisterEnvironment(schemaID2, env2)).To(Succeed()) }) }) Context("When it is registered", func() { It("Should return an error", func() { err := manager.RegisterEnvironment(schemaID1, env2) Expect(err).To(MatchError("Environment already registered for this schema")) }) }) }) Describe("Getting an environment", func() { Context("When it is registered", func() { It("Should return it", func() { env, ok := manager.GetEnvironment(schemaID1) Expect(ok).To(BeTrue()) Expect(env).To(Equal(env1)) }) }) Context("When it isn't registered", func() { It("Should return a false ok", func() { _, ok := manager.GetEnvironment(schemaID2) Expect(ok).To(BeFalse()) }) }) }) Describe("Unregistering an environment", func() { Context("When it is registered", func() {
var consume = function() { for (var i = 0; i < 10; i++) { var result = test_consume(); console.log("consumed:", result); } }`)).To(BeNil()) environmentManager.RegisterEnvironment("test_race", env) }) It("Should work", func() { var consumerError = make(chan error) var producerError = make(chan error) go func() { testEnv, _ := environmentManager.GetEnvironment("test_race") ottoEnv := testEnv.(*otto.Environment) _, err := ottoEnv.VM.Call("consume", nil) consumerError <- err }() go func() { testEnv, _ := environmentManager.GetEnvironment("test_race") ottoEnv := testEnv.(*otto.Environment) _, err := ottoEnv.VM.Call("produce", nil) producerError <- err }() select { case err := <-consumerError: Expect(err).To(BeNil())