istio

Форк
0
/
processlog_test.go 
82 строки · 2.7 Кб
1
// Copyright Istio Authors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15
package processlog
16

17
import (
18
	"path/filepath"
19
	"testing"
20
	"time"
21

22
	"github.com/google/go-cmp/cmp"
23

24
	"istio.io/istio/pilot/test/util"
25
	"istio.io/istio/pkg/test/env"
26
	"istio.io/istio/tools/bug-report/pkg/config"
27
)
28

29
func TestProcessLogsFormat(t *testing.T) {
30
	testDataDir := filepath.Join(env.IstioSrc, "tools/bug-report/pkg/testdata/")
31

32
	tests := []struct {
33
		name              string
34
		inputLogFilePath  string
35
		wantOutputLogPath string
36
		startTime         string
37
		endTime           string
38
		timeFilterApplied bool
39
	}{
40
		{
41
			name:              "input_log_of_text_format",
42
			inputLogFilePath:  "input/format_txt.log",
43
			wantOutputLogPath: "output/format_txt_no_time_filter.log",
44
			timeFilterApplied: false,
45
		},
46
		{
47
			name:              "input_log_of_json_format",
48
			inputLogFilePath:  "input/format_json.log",
49
			wantOutputLogPath: "output/format_json_no_time_filter.log",
50
			timeFilterApplied: false,
51
		},
52
		{
53
			name:              "input_log_of_text_format",
54
			inputLogFilePath:  "input/format_txt.log",
55
			wantOutputLogPath: "output/format_txt_with_time_filter.log",
56
			startTime:         "2020-06-29T23:37:27.336155Z",
57
			endTime:           "2020-06-29T23:37:27.349559Z",
58
			timeFilterApplied: true,
59
		},
60
		{
61
			name:              "input_log_of_json_format",
62
			inputLogFilePath:  "input/format_json.log",
63
			wantOutputLogPath: "output/format_json_with_time_filter.log",
64
			startTime:         "2023-05-10T17:43:55.356647Z",
65
			endTime:           "2023-05-10T17:43:55.356691Z",
66
			timeFilterApplied: true,
67
		},
68
	}
69
	for _, tt := range tests {
70
		t.Run(tt.name, func(t *testing.T) {
71
			inputLog := string(util.ReadFile(t, filepath.Join(testDataDir, tt.inputLogFilePath)))
72
			wantOutputLog := string(util.ReadFile(t, filepath.Join(testDataDir, tt.wantOutputLogPath)))
73
			start, _ := time.Parse(time.RFC3339Nano, tt.startTime)
74
			end, _ := time.Parse(time.RFC3339Nano, tt.endTime)
75
			c := config.BugReportConfig{StartTime: start, EndTime: end, TimeFilterApplied: tt.timeFilterApplied}
76
			gotOutputLog, _ := Process(&c, inputLog)
77
			if wantOutputLog != gotOutputLog {
78
				t.Errorf("got:\n%s\nwant:\n%s\n\ndiff (-got, +want):\n%s\n", gotOutputLog, wantOutputLog, cmp.Diff(gotOutputLog, wantOutputLog))
79
			}
80
		})
81
	}
82
}
83

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.