github.com/netdata/go.d.plugin@v0.58.1/modules/fluentd/fluentd_test.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package fluentd 4 5 import ( 6 "net/http" 7 "net/http/httptest" 8 "os" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 var testDataPlugins, _ = os.ReadFile("testdata/plugins.json") 16 17 func TestNew(t *testing.T) { 18 job := New() 19 assert.IsType(t, (*Fluentd)(nil), job) 20 assert.NotNil(t, job.charts) 21 assert.NotNil(t, job.activePlugins) 22 assert.Equal(t, defaultURL, job.URL) 23 assert.Equal(t, defaultHTTPTimeout, job.Timeout.Duration) 24 } 25 26 func TestFluentd_Init(t *testing.T) { 27 // OK 28 job := New() 29 assert.True(t, job.Init()) 30 assert.NotNil(t, job.apiClient) 31 32 //NG 33 job = New() 34 job.URL = "" 35 assert.False(t, job.Init()) 36 } 37 38 func TestFluentd_Check(t *testing.T) { 39 ts := httptest.NewServer(http.HandlerFunc( 40 func(w http.ResponseWriter, r *http.Request) { 41 _, _ = w.Write(testDataPlugins) 42 })) 43 defer ts.Close() 44 45 // OK 46 job := New() 47 job.URL = ts.URL 48 require.True(t, job.Init()) 49 require.True(t, job.Check()) 50 51 // NG 52 job = New() 53 job.URL = "http://127.0.0.1:38001/api/plugins.json" 54 require.True(t, job.Init()) 55 require.False(t, job.Check()) 56 } 57 58 func TestFluentd_Charts(t *testing.T) { 59 assert.NotNil(t, New().Charts()) 60 } 61 62 func TestFluentd_Cleanup(t *testing.T) { 63 New().Cleanup() 64 } 65 66 func TestFluentd_Collect(t *testing.T) { 67 ts := httptest.NewServer(http.HandlerFunc( 68 func(w http.ResponseWriter, r *http.Request) { 69 _, _ = w.Write(testDataPlugins) 70 })) 71 defer ts.Close() 72 73 job := New() 74 job.URL = ts.URL 75 76 require.True(t, job.Init()) 77 require.True(t, job.Check()) 78 79 expected := map[string]int64{ 80 "output_stdout_stdout_output_retry_count": 0, 81 "output_td_tdlog_output_retry_count": 0, 82 "output_td_tdlog_output_buffer_queue_length": 0, 83 "output_td_tdlog_output_buffer_total_queued_size": 0, 84 } 85 assert.Equal(t, expected, job.Collect()) 86 assert.Len(t, job.charts.Get("retry_count").Dims, 2) 87 assert.Len(t, job.charts.Get("buffer_queue_length").Dims, 1) 88 assert.Len(t, job.charts.Get("buffer_total_queued_size").Dims, 1) 89 } 90 91 func TestFluentd_InvalidData(t *testing.T) { 92 ts := httptest.NewServer(http.HandlerFunc( 93 func(w http.ResponseWriter, r *http.Request) { 94 _, _ = w.Write([]byte("hello and goodbye")) 95 })) 96 defer ts.Close() 97 98 job := New() 99 job.URL = ts.URL 100 require.True(t, job.Init()) 101 assert.False(t, job.Check()) 102 } 103 104 func TestFluentd_404(t *testing.T) { 105 ts := httptest.NewServer(http.HandlerFunc( 106 func(w http.ResponseWriter, r *http.Request) { 107 w.WriteHeader(404) 108 })) 109 defer ts.Close() 110 111 job := New() 112 job.URL = ts.URL 113 require.True(t, job.Init()) 114 assert.False(t, job.Check()) 115 }