docker_api_logs_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "bytes"
  4. "fmt"
  5. "net/http"
  6. "os/exec"
  7. "testing"
  8. )
  9. func TestLogsApiWithStdout(t *testing.T) {
  10. defer deleteAllContainers()
  11. name := "logs_test"
  12. runCmd := exec.Command(dockerBinary, "run", "-d", "-t", "--name", name, "busybox", "bin/sh", "-c", "sleep 10 && echo "+name)
  13. if out, _, err := runCommandWithOutput(runCmd); err != nil {
  14. t.Fatal(out, err)
  15. }
  16. statusCode, body, err := sockRequest("GET", fmt.Sprintf("/containers/%s/logs?follow=1&stdout=1&timestamps=1", name), nil)
  17. if err != nil || statusCode != http.StatusOK {
  18. t.Fatalf("Expected %d from logs request, got %d", http.StatusOK, statusCode)
  19. }
  20. if !bytes.Contains(body, []byte(name)) {
  21. t.Fatalf("Expected %s, got %s", name, string(body[:]))
  22. }
  23. logDone("logs API - with stdout ok")
  24. }
  25. func TestLogsApiNoStdoutNorStderr(t *testing.T) {
  26. defer deleteAllContainers()
  27. name := "logs_test"
  28. runCmd := exec.Command(dockerBinary, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
  29. if out, _, err := runCommandWithOutput(runCmd); err != nil {
  30. t.Fatal(out, err)
  31. }
  32. statusCode, body, err := sockRequest("GET", fmt.Sprintf("/containers/%s/logs", name), nil)
  33. if err == nil || statusCode != http.StatusBadRequest {
  34. t.Fatalf("Expected %d from logs request, got %d", http.StatusBadRequest, statusCode)
  35. }
  36. expected := "Bad parameters: you must choose at least one stream"
  37. if !bytes.Contains(body, []byte(expected)) {
  38. t.Fatalf("Expected %s, got %s", expected, string(body[:]))
  39. }
  40. logDone("logs API - returns error when no stdout nor stderr specified")
  41. }