engine_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package engine
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "path"
  6. "path/filepath"
  7. "testing"
  8. )
  9. func TestRegister(t *testing.T) {
  10. if err := Register("dummy1", nil); err != nil {
  11. t.Fatal(err)
  12. }
  13. if err := Register("dummy1", nil); err == nil {
  14. t.Fatalf("Expecting error, got none")
  15. }
  16. eng := newTestEngine(t)
  17. //Should fail because global handlers are copied
  18. //at the engine creation
  19. if err := eng.Register("dummy1", nil); err == nil {
  20. t.Fatalf("Expecting error, got none")
  21. }
  22. if err := eng.Register("dummy2", nil); err != nil {
  23. t.Fatal(err)
  24. }
  25. if err := eng.Register("dummy2", nil); err == nil {
  26. t.Fatalf("Expecting error, got none")
  27. }
  28. }
  29. func TestJob(t *testing.T) {
  30. eng := newTestEngine(t)
  31. job1 := eng.Job("dummy1", "--level=awesome")
  32. if job1.handler != nil {
  33. t.Fatalf("job1.handler should be empty")
  34. }
  35. h := func(j *Job) Status {
  36. j.Printf("%s\n", j.Name)
  37. return 42
  38. }
  39. eng.Register("dummy2", h)
  40. job2 := eng.Job("dummy2", "--level=awesome")
  41. if job2.handler == nil {
  42. t.Fatalf("job2.handler shouldn't be nil")
  43. }
  44. if job2.handler(job2) != 42 {
  45. t.Fatalf("handler dummy2 was not found in job2")
  46. }
  47. }
  48. func TestEngineRoot(t *testing.T) {
  49. tmp, err := ioutil.TempDir("", "docker-test-TestEngineCreateDir")
  50. if err != nil {
  51. t.Fatal(err)
  52. }
  53. defer os.RemoveAll(tmp)
  54. // We expect Root to resolve to an absolute path.
  55. // FIXME: this should not be necessary.
  56. // Until the above FIXME is implemented, let's check for the
  57. // current behavior.
  58. tmp, err = filepath.EvalSymlinks(tmp)
  59. if err != nil {
  60. t.Fatal(err)
  61. }
  62. tmp, err = filepath.Abs(tmp)
  63. if err != nil {
  64. t.Fatal(err)
  65. }
  66. dir := path.Join(tmp, "dir")
  67. eng, err := New(dir)
  68. if err != nil {
  69. t.Fatal(err)
  70. }
  71. if st, err := os.Stat(dir); err != nil {
  72. t.Fatal(err)
  73. } else if !st.IsDir() {
  74. t.Fatalf("engine.New() created something other than a directory at %s", dir)
  75. }
  76. if r := eng.Root(); r != dir {
  77. t.Fatalf("Expected: %v\nReceived: %v", dir, r)
  78. }
  79. }
  80. func TestEngineString(t *testing.T) {
  81. eng1 := newTestEngine(t)
  82. defer os.RemoveAll(eng1.Root())
  83. eng2 := newTestEngine(t)
  84. defer os.RemoveAll(eng2.Root())
  85. s1 := eng1.String()
  86. s2 := eng2.String()
  87. if eng1 == eng2 {
  88. t.Fatalf("Different engines should have different names (%v == %v)", s1, s2)
  89. }
  90. }
  91. func TestEngineLogf(t *testing.T) {
  92. eng := newTestEngine(t)
  93. defer os.RemoveAll(eng.Root())
  94. input := "Test log line"
  95. if n, err := eng.Logf("%s\n", input); err != nil {
  96. t.Fatal(err)
  97. } else if n < len(input) {
  98. t.Fatalf("Test: Logf() should print at least as much as the input\ninput=%d\nprinted=%d", len(input), n)
  99. }
  100. }