-
Notifications
You must be signed in to change notification settings - Fork 8
/
format_test.go
178 lines (146 loc) · 18.1 KB
/
format_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
package main
import (
"testing"
)
func TestValidString(t *testing.T) {
log := `00:00.172000-1003,DBPOSTGRS,4,process=rphost,p:processName=hrm_temp,OSThread=20134,t:clientID=78722,t:applicationName=BackgroundJob,t:computerName=CA-T3-APP-1,t:connectID=80699,SessionID=1,Usr=DefUser,DBMS=DBPOSTGRS,DataBase=ca-t3-db-1\hrm_temp,Trans=0,dbpid=19753,Sql='SELECT Creation,Modified,Attributes,DataSize,BinaryData FROM Config WHERE FileName = $1 ORDER BY PartNo',Prm="p_1: 'a7fe0aa5-722c-4a09-889b-ee422421addc'::mvarchar",RowsAffected=1,Result=PGRES_TUPLES_OK`
formatter := new(formatter1C)
data, err := formatter.Format(log)
if err != nil {
t.Error("Строка должна распарситься")
}
if _, ok := data["time"]; !ok {
t.Error("Отсутствует свойство time")
}
if _, ok := data["event"]; !ok {
t.Error("Отсутствует свойство event")
}
if v, ok := data["duration"]; !ok {
t.Error("Отсутствует свойство duration")
} else if v != "1003" {
t.Errorf("Некорректное свойство duration, ожидалось 1003, имеем %v", v)
}
if len(data) != 22 {
t.Errorf("Некорретное разбиение, должно быть 22 частей, имеем %v", len(data))
}
if data["Sql"] != "SELECT Creation,Modified,Attributes,DataSize,BinaryData FROM Config WHERE FileName = $1 ORDER BY PartNo" {
t.Error("Некорректно распарсилось свойство \"Sql\"")
}
if data["Prm"] != "p_1: 'a7fe0aa5-722c-4a09-889b-ee422421addc'::mvarchar" {
t.Error("Некорректно распарсилось свойство \"Prm\"")
}
}
func TestMultiLineString(t *testing.T) {
log := `00:06.558008-1003,TLOCK,4,process=rphost,p:processName=hrm_temp,OSThread=22516,t:clientID=84406,t:applicationName=BackgroundJob,t:computerName=CA-T3-APP-1,t:connectID=86289,SessionID=2,Usr=DefUser,DBMS=DBPOSTGRS,DataBase=ca-t3-db-1\hrm_temp,Regions=Reference65.REFLOCK,Locks='Reference65.REFLOCK Shared Fld1177=0',WaitConnections=,Context='ОбщийМодуль.ПолнотекстовыйПоискСервер.Модуль : 263 : ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОбновлениеИндексаППД);
ОбщийМодуль.ОбщегоНазначения.Модуль : 5102 : Справочники.ВерсииРасширений.ЗарегистрироватьИспользованиеВерсииРасширений();
Справочник.ВерсииРасширений.МодульМенеджера : 165 : ВерсияРасширений = ПараметрыСеанса.ВерсияРасширений;
МодульСеанса : 8 : СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль : 52 : Справочники.ВерсииРасширений.УстановкаПараметровСеанса(ИменаПараметровСеанса, УстановленныеПараметры);
Справочник.ВерсииРасширений.МодульМенеджера : 39 : ПараметрыСеанса.ВерсияРасширений = ВерсияРасширений();
Справочник.ВерсииРасширений.МодульМенеджера : 719 : Блокировка.Заблокировать();'`
formatter := new(formatter1C)
data, err := formatter.Format(log)
if err != nil {
t.Error("Строка должна распарситься")
}
if _, ok := data["time"]; !ok {
t.Error("Отсутствует свойство time")
}
if _, ok := data["event"]; !ok {
t.Error("Отсутствует свойство event")
}
if v, ok := data["duration"]; !ok {
t.Error("Отсутствует свойство duration")
} else if v != "1003" {
t.Errorf("Некорректное свойство duration, ожидалось 1003, имеем %v", v)
}
if len(data) != 20 {
t.Errorf("Некорретное разбиение, должно быть 20 частей, имеем %v", len(data))
}
}
func TestStringWithoutDuration(t *testing.T) {
log := `00:25.1850011000,TLOCK,4,process=rphost,p:processName=hrm_temp,OSThread=22517,t:clientID=84407`
formatter := new(formatter1C)
_, err := formatter.Format(log)
if err == nil {
t.Error("Строка не должна распарситься")
}
}
func TestStringInvalidString(t *testing.T) {
log := "жопа"
formatter := new(formatter1C)
_, err := formatter.Format(log)
if err == nil {
t.Error("Строка не должна распарситься")
}
}
func TestValidMinuteSecond(t *testing.T) {
log := `38:51.614002-1003,DBPOSTGRS,6,process=rphost,p:processName=acc-n20,OSThread=28531,t:clientID=2183,t:applicationName=WebServerExtension,t:computerName=CA-N20-WEB-1,t:connectID=25118,SessionID=31299,Usr=РысковаАА,AppID=WebClient,DBMS=DBPOSTGRS,DataBase=ca-n20-db-1\acc-n20,Trans=0,dbpid=4481,Sql="SELECTT1.AccountRRef,T1.Fld29328RRef,T1.Fld29331RRef,T1.Fld29335RRef,T1.Fld29336InitialBalanceDt_,T1.Fld29336InitialBalanceCt_,T1.Fld29336TurnoverDt_,T1.Fld29336TurnoverCt_,T1.Fld29336FinalBalanceDt_,T1.Fld29336FinalBalanceCt_,T1.Fld29331RRef,T7._Description,T7._Description,T8._EnumOrder,T1.AccountRRef,T9._Code,T9._Kind,T9._OrderFieldFROM (SELECTT2.Fld29328RRef AS Fld29328RRef,T2.AccountRRef AS AccountRRef,T2.Fld29331RRef AS Fld29331RRef,T2.Fld29335RRef AS Fld29335RRef,CASE WHEN SUM(T2.Fld29336TurnoverDt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T2.Fld29336TurnoverDt_) END AS Fld29336TurnoverDt_,CASE WHEN SUM(T2.Fld29336TurnoverCt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T2.Fld29336TurnoverCt_) END AS Fld29336TurnoverCt_,CASE WHEN SUM(T2.Fld29336Balance_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(0 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_) > CAST(0 AS NUMERIC) THEN SUM(T2.Fld29336Balance_) ELSE CAST(0 AS NUMERIC) END AS Fld29336InitialBalanceDt_,CASE WHEN SUM(T2.Fld29336Balance_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(1 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_) < CAST(0 AS NUMERIC) THEN -SUM(T2.Fld29336Balance_) ELSE CAST(0 AS NUMERIC) END AS Fld29336InitialBalanceCt_,CASE WHEN SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(0 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) > CAST(0 AS NUMERIC) THEN SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) ELSE CAST(0 AS NUMERIC) END AS Fld29336FinalBalanceDt_,CASE WHEN SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(1 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) < CAST(0 AS NUMERIC) THEN -SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) ELSE CAST(0 AS NUMERIC) END AS Fld29336FinalBalanceCt_,MAX(T6._Kind) AS AccKind_FROM (SELECTT3._Fld29328RRef AS Fld29328RRef,T3._AccountRRef AS AccountRRef,T3._Fld29331RRef AS Fld29331RRef,T3._Fld29335RRef AS Fld29335RRef,CASE WHEN T3._Period = '2020-01-01 00:00:00'::timestamp THEN T3._Fld29336 ELSE CAST(0 AS NUMERIC) END AS Fld29336Balance_,T3._Turnover29353 AS Fld29336FinalTurnover_,T3._TurnoverDt29351 AS Fld29336TurnoverDt_,T3._TurnoverCt29352 AS Fld29336TurnoverCt_FROM _AccRgAT029350 T3WHERE ((T3._Fld1265 = CAST(9039 AS NUMERIC))) AND (T3._Period >= '2020-01-01 00:00:00'::timestamp AND T3._Period < '2020-08-01 00:00:00'::timestamp AND ((T3._AccountRRef = '\\230\\313\\340\\313N\\300A\\367\\021\\345\\002\\224\\356\\007V\\342'::bytea)) AND ((T3._Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea) AND (T3._Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea)) AND (T3._Fld29336 <> CAST(0 AS NUMERIC) OR T3._TurnoverDt29351 <> CAST(0 AS NUMERIC) OR T3._TurnoverCt29352 <> CAST(0 AS NUMERIC) OR T3._Turnover29353 <> CAST(0 AS NUMERIC)))UNION ALL SELECTT4._Fld29328RRef AS Fld29328RRef,T4._AccountDtRRef AS AccountRRef,T4._Fld29331RRef AS Fld29331RRef,T4._Fld29335RRef AS Fld29335RRef,CAST(CAST(0 AS NUMERIC) AS NUMERIC(24, 2)) AS Fld29336Balance_,CAST(T4._Fld29336 AS NUMERIC(24, 2)) AS Fld29336FinalTurnover_,CAST(T4._Fld29336 AS NUMERIC(24, 2)) AS Fld29336TurnoverDt_,CAST(CAST(0 AS NUMERIC) AS NUMERIC(24, 2)) AS Fld29336TurnoverCt_FROM _AccRg29327 T4WHERE ((T4._Fld1265 = CAST(9039 AS NUMERIC))) AND (T4._Active = TRUE AND T4._AccountDtRRef <> '\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea AND ((T4._AccountDtRRef = '\\230\\313\\340\\313N\\300A\\367\\021\\345\\002\\224\\356\\007V\\342'::bytea)) AND ((T4._Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea) AND (T4._Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea)) AND (T4._Period > '2020-08-01 00:00:00'::timestamp OR T4._Period = '2020-08-01 00:00:00'::timestamp AND (T4._PeriodAdjustment >= CAST(0 AS NUMERIC))) AND (T4._Period < '2020-08-31 23:59:59'::timestamp OR T4._Period = '2020-08-31 23:59:59'::timestamp AND (T4._PeriodAdjustment <= CAST(0 AS NUMERIC))))UNION ALL SELECTT5._Fld29328RRef AS Fld29328RRef,T5._AccountCtRRef AS AccountRRef,T5._Fld29331RRef AS Fld29331RRef,T5._Fld29335RRef AS Fld29335RRef,CAST(CAST(0 AS NUMERIC) AS NUMERIC(24, 2)) AS Fld29336Balance_,CAST(-T5._Fld29336 AS NUMERIC(24, 2)) AS Fld29336FinalTurnover_,CAST(CAST(0 AS NUMERIC) AS NUMERIC(24, 2)) AS Fld29336TurnoverDt_,CAST(T5._Fld29336 AS NUMERIC(24, 2)) AS Fld29336TurnoverCt_FROM _AccRg29327 T5WHERE ((T5._Fld1265 = CAST(9039 AS NUMERIC))) AND (T5._Active = TRUE AND T5._AccountCtRRef <> '\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea AND ((T5._AccountCtRRef = '\\230\\313\\340\\313N\\300A\\367\\021\\345\\002\\224\\356\\007V\\342'::bytea)) AND ((T5._Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea) AND (T5._Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea)) AND (T5._Period > '2020-08-01 00:00:00'::timestamp OR T5._Period = '2020-08-01 00:00:00'::timestamp AND (T5._PeriodAdjustment >= CAST(0 AS NUMERIC))) AND (T5._Period < '2020-08-31 23:59:59'::timestamp OR T5._Period = '2020-08-31 23:59:59'::timestamp AND (T5._PeriodAdjustment <= CAST(0 AS NUMERIC))))) T2INNER JOIN _Acc36 T6ON T6._IDRRef = T2.AccountRRefWHERE (T6._Fld1265 = CAST(9039 AS NUMERIC))GROUP BY T2.Fld29328RRef,T2.AccountRRef,T2.Fld29331RRef,T2.Fld29335RRefHAVING (CASE WHEN SUM(T2.Fld29336TurnoverDt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T2.Fld29336TurnoverDt_) END) <> CAST(0 AS NUMERIC) OR (CASE WHEN SUM(T2.Fld29336TurnoverCt_) IS NULL THEN CAST(0 AS NUMERIC) ELSE SUM(T2.Fld29336TurnoverCt_) END) <> CAST(0 AS NUMERIC) OR (CASE WHEN SUM(T2.Fld29336Balance_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(0 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_) > CAST(0 AS NUMERIC) THEN SUM(T2.Fld29336Balance_) ELSE CAST(0 AS NUMERIC) END) <> CAST(0 AS NUMERIC) OR (CASE WHEN SUM(T2.Fld29336Balance_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(1 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_) < CAST(0 AS NUMERIC) THEN -SUM(T2.Fld29336Balance_) ELSE CAST(0 AS NUMERIC) END) <> CAST(0 AS NUMERIC) OR (CASE WHEN SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(0 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) > CAST(0 AS NUMERIC) THEN SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) ELSE CAST(0 AS NUMERIC) END) <> CAST(0 AS NUMERIC) OR (CASE WHEN SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) IS NULL THEN CAST(0 AS NUMERIC) WHEN MAX(T6._Kind) = CAST(1 AS NUMERIC) OR MAX(T6._Kind) = CAST(2 AS NUMERIC) AND SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) < CAST(0 AS NUMERIC) THEN -SUM(T2.Fld29336Balance_ + T2.Fld29336FinalTurnover_) ELSE CAST(0 AS NUMERIC) END) <> CAST(0 AS NUMERIC)) T1LEFT OUTER JOIN _Reference138 T7ON (T1.Fld29331RRef = T7._IDRRef) AND (T7._Fld1265 = CAST(9039 AS NUMERIC))LEFT OUTER JOIN _Enum886 T8ON T1.Fld29335RRef = T8._IDRRefLEFT OUTER JOIN _Acc36 T9ON (T1.AccountRRef = T9._IDRRef) AND (T9._Fld1265 = CAST(9039 AS NUMERIC))WHERE (T1.Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea) AND (T1.Fld29328RRef = '\\234~\\326\\2138\\021<\\221\\021\\351IQ\\247\\220\\367\\322'::bytea)",RowsAffected=18,Result=PGRES_TUPLES_OK,Context='Форма.Вызов : Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма.ФормаОтчета.Модуль.СформироватьОтчетСерверОтчет.ОборотноСальдоваяВедомостьПоСчету.Форма.ФормаОтчета.Форма : 560 : ОбъектОтчет.СформироватьОтчет(Результат, ДанныеРасшифровки, СхемаКомпоновкиДанных, Истина); Отчет.ОборотноСальдоваяВедомостьПоСчету.МодульОбъекта : 343 : СтандартныеОтчеты.ВывестиОтчет(ЭтотОбъект, Результат, ДанныеРасшифровки, Схема, ВыводитьПолностью); ОбщийМодуль.СтандартныеОтчеты.Модуль : 612 : ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);'`
formatter := new(formatter1C)
data, err := formatter.Format(log)
if err != nil {
t.Error("Строка должна распарситься")
}
if _, ok := data["time"]; !ok {
t.Error("Отсутствует свойство time")
}
if _, ok := data["event"]; !ok {
t.Error("Отсутствует свойство event")
}
if v, ok := data["duration"]; !ok {
t.Error("Отсутствует свойство duration")
} else if v != "1003" {
t.Errorf("Некорректное свойство duration, ожидалось 1003, имеем %v", v)
}
if min, ok := data["minutes"]; !ok || min != "38" {
t.Error("Отсутствует или не верно определено свойство \"minutes\"")
}
if sec, ok := data["seconds"]; !ok || sec != "51" {
t.Error("Отсутствует или не верно определено свойство \"seconds\"")
}
}
func TestStringInvalidMinuteSecond(t *testing.T) {
log := `100:235.185001-1000,TLOCK,4,process=rphost,p:processName=hrm_temp,OSThread=22517,t:clientID=84407`
formatter := new(formatter1C)
data, err := formatter.Format(log)
if err != nil {
t.Error("Строка должна распарситься")
}
if _, ok := data["minutes"]; ok {
t.Error("Присутствует свойство \"minutes\", должно отсутствовать")
}
if _, ok := data["seconds"]; ok {
t.Error("Присутствует свойство \"seconds\", должно отсутствовать")
}
}
func TestValidString1(t *testing.T) {
log := `00:06.558008-1003,TLOCK,4,process=rphost,p:processName=hrm_temp,OSThread=22516,t:clientID=84406,t:applicationName=BackgroundJob,t:computerName=CA-T3-APP-1,t:connectID=86289,SessionID=2,Usr=DefUser,DBMS=DBPOSTGRS,DataBase=ca-t3-db-1\hrm_temp,Regions=Reference65.REFLOCK,Locks='Reference65.REFLOCK Shared Fld1177=0',WaitConnections=,Context="ОбщийМодуль.ПолнотекстовыйПоискСервер.Модуль : 263 : ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОбновлениеИндексаППД);
ОбщийМодуль.ОбщегоНазначения.Модуль : 5102 : Справочники.ВерсииРасширений.ЗарегистрироватьИспользованиеВерсииРасширений();
Справочник.ВерсииРасширений.МодульМенеджера : 165 : ВерсияРасширений = ПараметрыСеанса.ВерсияРасширений;
МодульСеанса : 8 : СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль : 52 : Справочники.ВерсииРасширений.УстановкаПараметровСеанса(ИменаПараметровСеанса, УстановленныеПараметры);
Справочник.ВерсииРасширений.МодульМенеджера : 39 : ПараметрыСеанса.ВерсияРасширений = ВерсияРасширений();
Справочник.ВерсииРасширений.МодульМенеджера : 719 : Блокировка.Заблокировать();"`
formatter := new(formatter1C)
data, err := formatter.Format(log)
if err != nil {
t.Error("Строка должна распарситься")
}
if _, ok := data["time"]; !ok {
t.Error("Отсутствует свойство time")
}
if _, ok := data["event"]; !ok {
t.Error("Отсутствует свойство event")
}
if v, ok := data["duration"]; !ok {
t.Error("Отсутствует свойство duration")
} else if v != "1003" {
t.Errorf("Некорректное свойство duration, ожидалось 1003, имеем %v", v)
}
if len(data) != 20 {
t.Errorf("Некорретное разбиение, должно быть 20 частей, имеем %v", len(data))
}
}
// go test -v -cover
// go test -coverprofile="cover.out"
// go tool cover -html="cover.out" -o cover.html