Added tests for graph.go
							parent
							
								
									18cb18f6a7
								
							
						
					
					
						commit
						07c78387d8
					
				| @ -0,0 +1,155 @@ | |||||||
|  | package main | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  |   "testing" | ||||||
|  |   "time" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type graph_tester testing.T | ||||||
|  | const listner_timeout = 100 * time.Millisecond | ||||||
|  | 
 | ||||||
|  | func (t * graph_tester) CheckForNil(listener chan error) { | ||||||
|  |   timeout := time.After(listner_timeout) | ||||||
|  |   select { | ||||||
|  |     case msg := <-listener: | ||||||
|  |       if msg == nil { | ||||||
|  |         return | ||||||
|  |       } else { | ||||||
|  |         t.Fatal("non-nil message on channel") | ||||||
|  |       } | ||||||
|  |     case <-timeout: | ||||||
|  |       t.Fatal("timeout waiting for message on channel") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (t * graph_tester) CheckForNonNil(listener chan error) { | ||||||
|  |   timeout := time.After(listner_timeout) | ||||||
|  |   select { | ||||||
|  |     case msg := <- listener: | ||||||
|  |       if msg != nil { | ||||||
|  |         return | ||||||
|  |       } else { | ||||||
|  |         t.Fatal("nil message on channel") | ||||||
|  |       } | ||||||
|  |     case <-timeout: | ||||||
|  |       t.Fatal("timeout waiting for message on channel") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (t * graph_tester) CheckForNone(listener chan error) { | ||||||
|  |   timeout := time.After(listner_timeout) | ||||||
|  |   select { | ||||||
|  |     case <- listener: | ||||||
|  |       t.Fatal("message on channel") | ||||||
|  |     case <-timeout: | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestNewResourceAdd(t *testing.T) { | ||||||
|  |   name := "Test Resource" | ||||||
|  |   description := "A resource for testing" | ||||||
|  |   children := []Resource{} | ||||||
|  | 
 | ||||||
|  |   test_resource := NewResource(name, description, children) | ||||||
|  |   event_manager := NewEventManager() | ||||||
|  |   event_manager.AddResource(test_resource) | ||||||
|  |   res := event_manager.FindResource(test_resource.ID()) | ||||||
|  | 
 | ||||||
|  |   if res == nil { | ||||||
|  |     t.Fatal("Failed to find Resource in EventManager after adding") | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if res.Name() != name || res.Description() != description { | ||||||
|  |     t.Fatal("Name/description of returned resource did not match added resource") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestDoubleResourceAdd(t * testing.T) { | ||||||
|  |   test_resource := NewResource("", "", []Resource{}) | ||||||
|  |   event_manager := NewEventManager() | ||||||
|  |   err_1 := event_manager.AddResource(test_resource) | ||||||
|  |   err_2 := event_manager.AddResource(test_resource) | ||||||
|  | 
 | ||||||
|  |   if err_1 != nil { | ||||||
|  |     t.Fatalf("First AddResource returned error %s", err_1) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if err_2 == nil { | ||||||
|  |     t.Fatal("Second AddResource returned nil") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestMissingResourceAdd(t * testing.T) { | ||||||
|  |   r1 := NewResource("r1", "", []Resource{}) | ||||||
|  |   r2 := NewResource("r2", "", []Resource{r1}) | ||||||
|  | 
 | ||||||
|  |   event_manager := NewEventManager() | ||||||
|  |   err := event_manager.AddResource(r2) | ||||||
|  |   if err == nil { | ||||||
|  |     t.Fatal("AddResource with missing child returned nil") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestTieredResourceAdd(t * testing.T) { | ||||||
|  |   r1 := NewResource("r1", "", []Resource{}) | ||||||
|  |   r2 := NewResource("r2", "", []Resource{r1}) | ||||||
|  | 
 | ||||||
|  |   event_manager := NewEventManager() | ||||||
|  |   err_1 := event_manager.AddResource(r1) | ||||||
|  |   err_2 := event_manager.AddResource(r2) | ||||||
|  |   if err_1 != nil || err_2 != nil { | ||||||
|  |     t.Fatal("Failed adding tiered resource") | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestResourceUpdate(t * testing.T) { | ||||||
|  |   r1 := NewResource("r1", "", []Resource{}) | ||||||
|  |   r2 := NewResource("r2", "", []Resource{}) | ||||||
|  |   r3 := NewResource("r3", "", []Resource{r1, r2}) | ||||||
|  | 
 | ||||||
|  |   event_manager := NewEventManager() | ||||||
|  |   err_1 := event_manager.AddResource(r1) | ||||||
|  |   err_2 := event_manager.AddResource(r2) | ||||||
|  |   err_3 := event_manager.AddResource(r3) | ||||||
|  | 
 | ||||||
|  |   if err_1 != nil || err_2 != nil || err_3 != nil { | ||||||
|  |     t.Fatal("Failed to add initial tiered resources for test") | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   r1_l := r1.UpdateChannel() | ||||||
|  |   r2_l := r2.UpdateChannel() | ||||||
|  |   r3_l := r3.UpdateChannel() | ||||||
|  | 
 | ||||||
|  |   // Calling Update() on the parent with no other parents should only notify node listeners
 | ||||||
|  |   r3.Update() | ||||||
|  |   (*graph_tester)(t).CheckForNone(r1_l) | ||||||
|  |   (*graph_tester)(t).CheckForNone(r2_l) | ||||||
|  |   (*graph_tester)(t).CheckForNil(r3_l) | ||||||
|  | 
 | ||||||
|  |   // Calling Update() on a child should notify listeners of the parent and child, but not siblings
 | ||||||
|  |   r2.Update() | ||||||
|  |   (*graph_tester)(t).CheckForNone(r1_l) | ||||||
|  |   (*graph_tester)(t).CheckForNil(r2_l) | ||||||
|  |   (*graph_tester)(t).CheckForNil(r3_l) | ||||||
|  | 
 | ||||||
|  |   // Calling Update() on a child should notify listeners of the parent and child, but not siblings
 | ||||||
|  |   r1.Update() | ||||||
|  |   (*graph_tester)(t).CheckForNil(r1_l) | ||||||
|  |   (*graph_tester)(t).CheckForNone(r2_l) | ||||||
|  |   (*graph_tester)(t).CheckForNil(r3_l) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestLockResource(t * testing.T) { | ||||||
|  |   r1 := NewResource("r1", "", []Resource{}) | ||||||
|  |   r2 := NewResource("r2", "", []Resource{}) | ||||||
|  |   r3 := NewResource("r3", "", []Resource{r1, r2}) | ||||||
|  | 
 | ||||||
|  |   event_manager := NewEventManager() | ||||||
|  |   err_1 := event_manager.AddResource(r1) | ||||||
|  |   err_2 := event_manager.AddResource(r2) | ||||||
|  |   err_3 := event_manager.AddResource(r3) | ||||||
|  | 
 | ||||||
|  |   if err_1 != nil || err_2 != nil || err_3 != nil { | ||||||
|  |     t.Fatal("Failed to add initial tiered resources for test") | ||||||
|  |   } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue