index_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package stream
  2. import (
  3. "testing"
  4. )
  5. func TestIsStreamConfig(t *testing.T) {
  6. tests := []struct {
  7. path string
  8. expected bool
  9. }{
  10. {"streams-available/test.conf", true},
  11. {"streams-enabled/test.conf", true},
  12. {"/etc/nginx/streams-available/test.conf", true},
  13. {"/etc/nginx/streams-enabled/test.conf", true},
  14. {"/var/lib/nginx/streams-available/my-stream.conf", true},
  15. {"/home/user/nginx/streams-enabled/tcp-proxy.conf", true},
  16. {"sites-available/test.conf", false},
  17. {"sites-enabled/test.conf", false},
  18. {"/etc/nginx/conf.d/test.conf", false},
  19. {"test.conf", false},
  20. }
  21. for _, test := range tests {
  22. result := isStreamConfig(test.path)
  23. if result != test.expected {
  24. t.Errorf("isStreamConfig(%q) = %v, expected %v", test.path, result, test.expected)
  25. }
  26. }
  27. }
  28. func TestScanForStream(t *testing.T) {
  29. // Clear the IndexedStreams map
  30. IndexedStreams = make(map[string]*StreamIndex)
  31. config := `upstream my-tcp {
  32. server 127.0.0.1:9000;
  33. }
  34. server {
  35. listen 1234-1236;
  36. resolver 8.8.8.8 valid=1s;
  37. proxy_pass example.com:$server_port;
  38. }`
  39. // Test with a valid stream config path
  40. err := scanForStream("streams-available/test.conf", []byte(config))
  41. if err != nil {
  42. t.Errorf("scanForStream failed: %v", err)
  43. }
  44. // Check if the stream was indexed
  45. if len(IndexedStreams) != 1 {
  46. t.Errorf("Expected 1 indexed stream, got %d", len(IndexedStreams))
  47. }
  48. stream := IndexedStreams["test.conf"]
  49. if stream == nil {
  50. t.Fatal("Stream not found in index")
  51. }
  52. if len(stream.ProxyTargets) != 2 {
  53. t.Errorf("Expected 2 proxy targets, got %d", len(stream.ProxyTargets))
  54. for i, target := range stream.ProxyTargets {
  55. t.Logf("Target %d: %+v", i, target)
  56. }
  57. }
  58. // Test with a non-stream config path
  59. IndexedStreams = make(map[string]*StreamIndex)
  60. err = scanForStream("sites-available/test.conf", []byte(config))
  61. if err != nil {
  62. t.Errorf("scanForStream failed: %v", err)
  63. }
  64. // Should not be indexed
  65. if len(IndexedStreams) != 0 {
  66. t.Errorf("Expected 0 indexed streams for non-stream config, got %d", len(IndexedStreams))
  67. }
  68. }