@@ -222,6 +222,15 @@ func x_make_child_exit(id int64, pid int64, code int64) string {
222
222
code ,
223
223
1.0 )
224
224
}
225
+ func x_make_exec (id int64 , exe string , a0 string , a1 string ) string {
226
+ return fmt .Sprintf (`{%s,"exec_id":%d,"exe":"%s","argv":%s}` ,
227
+ x_make_common (
228
+ "exec" ,
229
+ x_main ),
230
+ id ,
231
+ exe ,
232
+ fmt .Sprintf (`["%s","%s"]` , a0 , a1 ))
233
+ }
225
234
func x_make_region_enter (thread_name string , nesting int64 , category string , label string , msg string ) string {
226
235
return fmt .Sprintf (`{%s,"nesting":%d,"category":"%s","label":"%s","msg":"%s"}` ,
227
236
x_make_common (
@@ -926,6 +935,37 @@ func Test_Dataset_RejectClient_FSMonitor(t *testing.T) {
926
935
assert .True (t , rce .FSMonitor )
927
936
}
928
937
938
+ func Test_Dataset_Exec (t * testing.T ) {
939
+
940
+ var events []string = []string {
941
+ x_make_version (),
942
+ x_make_start_argv1 ("xx" ),
943
+ x_make_cmd_name_nh ("foo" , "qq" ),
944
+ x_make_cmd_mode (),
945
+ x_make_alias (),
946
+
947
+ x_make_exec (0 , "git" , "a0" , "a1" ),
948
+
949
+ x_make_atexit (), // should be last
950
+ }
951
+
952
+ tr2 , sufficient , _ := load_test_dataset (t , events )
953
+ assert .True (t , sufficient , "have sufficient data" )
954
+ assert .Equal (t , tr2 .trace2SID , x_sid )
955
+ assert .Equal (t , tr2 .process .qualifiedNames .exe , "xx" )
956
+ assert .Equal (t , tr2 .process .qualifiedNames .exeVerb , "xx:foo" )
957
+ assert .Equal (t , tr2 .process .qualifiedNames .exeVerbMode , "xx:foo#x-mode" )
958
+
959
+ assert .Equal (t , len (tr2 .exec ), 1 )
960
+ assert .NotNil (t , tr2 .exec )
961
+ assert .NotNil (t , tr2 .exec [0 ])
962
+
963
+ assert .Equal (t , tr2 .exec [0 ].exe , "git" )
964
+ assert .Equal (t , len (tr2 .exec [0 ].argv ), 2 )
965
+ assert .Equal (t , tr2 .exec [0 ].argv [0 ], "a0" )
966
+ assert .Equal (t , tr2 .exec [0 ].argv [1 ], "a1" )
967
+ }
968
+
929
969
// Given an array of raw Trace2 messages, parse and appy them
930
970
// to a newly created dataset.
931
971
func load_test_dataset (t * testing.T , events []string ) (tr2 * trace2Dataset , sufficient bool , err error ) {
0 commit comments