Browse Source

Better error reporting in engine logs and unit tests

Solomon Hykes 11 years ago
parent
commit
d3f074494a
3 changed files with 9 additions and 4 deletions
  1. 1 1
      runtime_test.go
  2. 6 1
      server.go
  3. 2 2
      utils_test.go

+ 1 - 1
runtime_test.go

@@ -183,7 +183,7 @@ func GetTestImage(runtime *Runtime) *Image {
 			return image
 			return image
 		}
 		}
 	}
 	}
-	log.Fatalf("Test image %v not found", unitTestImageID)
+	log.Fatalf("Test image %v not found in %s: %s", unitTestImageID, runtime.graph.Root, imgs)
 	return nil
 	return nil
 }
 }
 
 

+ 6 - 1
server.go

@@ -40,6 +40,7 @@ func init() {
 // Only one api server can run at the same time - this is enforced by a pidfile.
 // Only one api server can run at the same time - this is enforced by a pidfile.
 // The signals SIGINT, SIGKILL and SIGTERM are intercepted for cleanup.
 // The signals SIGINT, SIGKILL and SIGTERM are intercepted for cleanup.
 func jobInitApi(job *engine.Job) string {
 func jobInitApi(job *engine.Job) string {
+	job.Logf("Creating server")
 	srv, err := NewServer(job.Eng, ConfigFromJob(job))
 	srv, err := NewServer(job.Eng, ConfigFromJob(job))
 	if err != nil {
 	if err != nil {
 		return err.Error()
 		return err.Error()
@@ -50,6 +51,7 @@ func jobInitApi(job *engine.Job) string {
 			log.Fatal(err)
 			log.Fatal(err)
 		}
 		}
 	}
 	}
+	job.Logf("Setting up signal traps")
 	c := make(chan os.Signal, 1)
 	c := make(chan os.Signal, 1)
 	signal.Notify(c, os.Interrupt, os.Kill, os.Signal(syscall.SIGTERM))
 	signal.Notify(c, os.Interrupt, os.Kill, os.Signal(syscall.SIGTERM))
 	go func() {
 	go func() {
@@ -1288,7 +1290,7 @@ func (srv *Server) RegisterLinks(name string, hostConfig *HostConfig) error {
 		return fmt.Errorf("No such container: %s", name)
 		return fmt.Errorf("No such container: %s", name)
 	}
 	}
 
 
-	if hostConfig.Links != nil {
+	if hostConfig != nil && hostConfig.Links != nil {
 		for _, l := range hostConfig.Links {
 		for _, l := range hostConfig.Links {
 			parts, err := parseLink(l)
 			parts, err := parseLink(l)
 			if err != nil {
 			if err != nil {
@@ -1317,11 +1319,14 @@ func (srv *Server) RegisterLinks(name string, hostConfig *HostConfig) error {
 }
 }
 
 
 func (srv *Server) ContainerStart(job *engine.Job) string {
 func (srv *Server) ContainerStart(job *engine.Job) string {
+	job.Logf("srv engine = %s", srv.Eng.Root())
+	job.Logf("job engine = %s", job.Eng.Root())
 	if len(job.Args) < 1 {
 	if len(job.Args) < 1 {
 		return fmt.Sprintf("Usage: %s container_id", job.Name)
 		return fmt.Sprintf("Usage: %s container_id", job.Name)
 	}
 	}
 	name := job.Args[0]
 	name := job.Args[0]
 	runtime := srv.runtime
 	runtime := srv.runtime
+	job.Logf("loading containers from %s", runtime.repository)
 	container := runtime.Get(name)
 	container := runtime.Get(name)
 	if container == nil {
 	if container == nil {
 		return fmt.Sprintf("No such container: %s", name)
 		return fmt.Sprintf("No such container: %s", name)

+ 2 - 2
utils_test.go

@@ -41,11 +41,11 @@ func mkRuntime(f utils.Fataler) *Runtime {
 func mkServerFromEngine(eng *engine.Engine, t utils.Fataler) *Server {
 func mkServerFromEngine(eng *engine.Engine, t utils.Fataler) *Server {
 	iSrv := eng.Hack_GetGlobalVar("httpapi.server")
 	iSrv := eng.Hack_GetGlobalVar("httpapi.server")
 	if iSrv == nil {
 	if iSrv == nil {
-		t.Fatal("Legacy server field not set in engine")
+		panic("Legacy server field not set in engine")
 	}
 	}
 	srv, ok := iSrv.(*Server)
 	srv, ok := iSrv.(*Server)
 	if !ok {
 	if !ok {
-		t.Fatal("Legacy server field in engine does not cast to *Server")
+		panic("Legacy server field in engine does not cast to *Server")
 	}
 	}
 	return srv
 	return srv
 }
 }