Skip to content

Commit e366f29

Browse files
committed
refactor: refactor logging tests and add AI debug data tracking
- Added a new JSON file for AI terminal debug data with function entry and exit timestamps. - Added a new log counter file initialized with the value `1`. - Removed extensive test cases for logger functionality, including basic logging, concurrent logging, buffer flushing, and counter file handling. - Removed tests for invalid buffer size, disabled logging, and different log formats. - Simplified the test file by removing unused imports and reducing test coverage. Signed-off-by: codiing-hui <wecoding@yeah.net>
1 parent 8656d17 commit e366f29

File tree

3 files changed

+19
-208
lines changed

3 files changed

+19
-208
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"data": {
3+
"arguments": [
4+
"arg1",
5+
123,
6+
true
7+
],
8+
"function": "TestFunction",
9+
"type": "function_entry"
10+
},
11+
"timestamp": "2025-02-15T14:55:18.716032+08:00"
12+
}{
13+
"data": {
14+
"function": "TestFunction",
15+
"type": "function_exit"
16+
},
17+
"timestamp": "2025-02-15T14:55:18.716207+08:00"
18+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

internal/util/debug/log_test.go

Lines changed: 0 additions & 208 deletions
Original file line numberDiff line numberDiff line change
@@ -2,152 +2,10 @@
22
package debug
33

44
import (
5-
"fmt"
65
"os"
7-
"strings"
8-
"sync"
96
"testing"
10-
"time"
117
)
128

13-
func TestLogger(t *testing.T) {
14-
// Setup test environment
15-
os.Setenv(envEnableLog, "true")
16-
os.Setenv(envLogFormat, FormatJSON)
17-
defer os.Unsetenv(envEnableLog)
18-
defer os.Unsetenv(envLogFormat)
19-
20-
// Clean up any existing counter file
21-
os.Remove(counterFileName)
22-
defer os.Remove(counterFileName)
23-
24-
t.Run("basic logging", func(t *testing.T) {
25-
logger, err := NewLogger()
26-
if err != nil {
27-
t.Fatalf("Failed to create logger: %v", err)
28-
}
29-
defer logger.Close()
30-
31-
testData := map[string]interface{}{
32-
"test": "value",
33-
"count": 42,
34-
}
35-
36-
err = logger.Log(testData)
37-
if err != nil {
38-
t.Errorf("Log() failed: %v", err)
39-
}
40-
41-
// Verify file was created
42-
filename := fmt.Sprintf("%s-%04d.%s", defaultFileName, 0, FormatJSON)
43-
if _, err := os.Stat(filename); os.IsNotExist(err) {
44-
t.Errorf("Log file was not created: %v", err)
45-
}
46-
os.Remove(filename)
47-
})
48-
49-
t.Run("concurrent logging", func(t *testing.T) {
50-
logger, err := NewLogger()
51-
if err != nil {
52-
t.Fatalf("Failed to create logger: %v", err)
53-
}
54-
defer logger.Close()
55-
56-
var wg sync.WaitGroup
57-
for i := 0; i < 10; i++ {
58-
wg.Add(1)
59-
go func(i int) {
60-
defer wg.Done()
61-
err := logger.Log(map[string]interface{}{
62-
"goroutine": i,
63-
})
64-
if err != nil {
65-
t.Errorf("Log() failed in goroutine %d: %v", i, err)
66-
}
67-
}(i)
68-
}
69-
wg.Wait()
70-
})
71-
72-
t.Run("buffer flushing", func(t *testing.T) {
73-
logger, err := NewLogger(WithBufferSize(100))
74-
if err != nil {
75-
t.Fatalf("Failed to create logger: %v", err)
76-
}
77-
defer logger.Close()
78-
79-
// Write enough data to trigger buffer flush
80-
for i := 0; i < 10; i++ {
81-
err := logger.Log(map[string]interface{}{
82-
"test": strings.Repeat("a", 20),
83-
})
84-
if err != nil {
85-
t.Errorf("Log() failed: %v", err)
86-
}
87-
}
88-
})
89-
90-
t.Run("close with empty buffer", func(t *testing.T) {
91-
logger, err := NewLogger()
92-
if err != nil {
93-
t.Fatalf("Failed to create logger: %v", err)
94-
}
95-
96-
err = logger.Close()
97-
if err != nil {
98-
t.Errorf("Close() failed: %v", err)
99-
}
100-
})
101-
102-
t.Run("counter file handling", func(t *testing.T) {
103-
// Test counter increment
104-
logger1, err := NewLogger()
105-
if err != nil {
106-
t.Fatalf("Failed to create logger: %v", err)
107-
}
108-
logger1.Close()
109-
110-
logger2, err := NewLogger()
111-
if err != nil {
112-
t.Fatalf("Failed to create logger: %v", err)
113-
}
114-
logger2.Close()
115-
116-
if logger2.counter != 1 {
117-
t.Errorf("Counter not incremented correctly, got %d want 1", logger2.counter)
118-
}
119-
120-
// Test counter file cleanup
121-
err = os.WriteFile(counterFileName, []byte("0"), 0644)
122-
if err != nil {
123-
t.Fatalf("Failed to write counter file: %v", err)
124-
}
125-
126-
logger3, err := NewLogger()
127-
if err != nil {
128-
t.Fatalf("Failed to create logger: %v", err)
129-
}
130-
logger3.Close()
131-
132-
if _, err := os.Stat(counterFileName); !os.IsNotExist(err) {
133-
t.Errorf("Counter file not cleaned up when reaching 0")
134-
}
135-
})
136-
137-
t.Run("invalid buffer size", func(t *testing.T) {
138-
logger, err := NewLogger(WithBufferSize(-1))
139-
if err != nil {
140-
t.Fatalf("Failed to create logger: %v", err)
141-
}
142-
defer logger.Close()
143-
144-
if logger.bufferSize != defaultBufferSize {
145-
t.Errorf("Invalid buffer size not handled correctly, got %d want %d",
146-
logger.bufferSize, defaultBufferSize)
147-
}
148-
})
149-
}
150-
1519
func TestTraceUn(t *testing.T) {
15210
// Setup test environment
15311
os.Setenv(envEnableLog, "true")
@@ -173,69 +31,3 @@ func TestTraceUn(t *testing.T) {
17331
// Clean up
17432
Teardown()
17533
}
176-
177-
func TestLogDisabled(t *testing.T) {
178-
// Ensure logging is disabled
179-
os.Unsetenv(envEnableLog)
180-
Initialize()
181-
182-
testData := map[string]interface{}{
183-
"test": "should not be logged",
184-
}
185-
186-
err := Log(testData)
187-
if err != nil {
188-
t.Errorf("Log() failed when disabled: %v", err)
189-
}
190-
}
191-
192-
func TestLogFormats(t *testing.T) {
193-
testCases := []struct {
194-
format string
195-
formatter Formatter
196-
}{
197-
{FormatJSON, JSONFormatter{}},
198-
{FormatYAML, YAMLFormatter{}},
199-
}
200-
201-
for _, tc := range testCases {
202-
t.Run(tc.format, func(t *testing.T) {
203-
// Setup test environment
204-
os.Setenv(envEnableLog, "true")
205-
defer os.Unsetenv(envEnableLog)
206-
207-
// Create logger with specific formatter
208-
logger, err := NewLogger(WithFormatter(tc.formatter))
209-
if err != nil {
210-
t.Fatalf("Failed to create logger: %v", err)
211-
}
212-
defer logger.Close()
213-
214-
testData := map[string]interface{}{
215-
"time": time.Now(),
216-
"format": tc.format,
217-
}
218-
219-
err = logger.Log(testData)
220-
if err != nil {
221-
t.Errorf("Log() failed with format %s: %v", tc.format, err)
222-
}
223-
224-
// Verify formatter implementation
225-
output, err := tc.formatter.Format(testData)
226-
if err != nil {
227-
t.Errorf("Formatter failed for %s: %v", tc.format, err)
228-
}
229-
230-
if len(output) == 0 {
231-
t.Errorf("Formatter returned empty output for %s", tc.format)
232-
}
233-
234-
// Verify file extension
235-
ext := tc.formatter.FileExtension()
236-
if ext != tc.format {
237-
t.Errorf("Invalid file extension, got %s want %s", ext, tc.format)
238-
}
239-
})
240-
}
241-
}

0 commit comments

Comments
 (0)