github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/fn_default_time_test.go (about)

     1  // Unless explicitly stated otherwise all files in this repository are licensed
     2  // under the MIT License.
     3  // This product includes software developed at Guance Cloud (https://www.guance.com/).
     4  // Copyright 2021-present Guance, Inc.
     5  
     6  package funcs
     7  
     8  import (
     9  	"testing"
    10  	"time"
    11  
    12  	"github.com/GuanceCloud/cliutils/pipeline/ptinput"
    13  	"github.com/GuanceCloud/cliutils/point"
    14  	tu "github.com/GuanceCloud/cliutils/testutil"
    15  )
    16  
    17  func TestDefaultTime(t *testing.T) {
    18  	// local timezone: utc+0800
    19  	cst := time.FixedZone("CST", 8*3600)
    20  	time.Local = cst
    21  
    22  	cases := []struct {
    23  		name, pl, in string
    24  		outkey       string
    25  		expect       interface{}
    26  		fail         bool
    27  	}{
    28  		{
    29  			name: "nginx log datetime, 02/Jan/2006:15:04:05 -0700",
    30  			in:   `{"time":"02/Dec/2021:11:55:34 +0800"}`,
    31  			pl: `
    32  			json(_, time)
    33  			default_time(time)
    34  		`,
    35  			outkey: "time",
    36  			expect: int64(1638417334000000000),
    37  			fail:   false,
    38  		},
    39  		{
    40  			name: "nginx log datetime, 02/Jan/2006:15:04:05 -0700",
    41  			in:   `{"time":"02/Dec/2021:11:55:34 +0800"}`,
    42  			pl: `
    43  			json(_, time)
    44  			default_time(time)
    45  		`,
    46  			outkey: "time",
    47  			expect: int64(1638417334000000000),
    48  			fail:   false,
    49  		},
    50  		{
    51  			name: "redis log datetime-tokyo",
    52  			in:   `{"time":"02 Dec 2021 12:55:34.000"}`,
    53  			pl: `
    54  			json(_, time)
    55  			default_time(time, "Asia/Tokyo")
    56  		`,
    57  			outkey: "time",
    58  			expect: int64(1638417334000000000),
    59  			fail:   false,
    60  		},
    61  
    62  		{
    63  			name: "redis log datetime-default tz",
    64  			in:   `{"time":"02 Dec 2021 11:55:34.000"}`,
    65  			pl: `
    66  			json(_, time)
    67  			default_time(time)
    68  		`,
    69  			outkey: "time",
    70  			expect: int64(1638417334000000000),
    71  			fail:   false,
    72  		},
    73  		{
    74  			name: "redis log datetime no year",
    75  			in:   `{"time":"02 Dec 11:55:34.000"}`,
    76  			pl: `
    77  			json(_, time)
    78  			default_time(time)
    79  		`,
    80  			outkey: "time",
    81  			expect: time.Date(time.Now().Year(), time.Month(12), 2, 11, 55, 34, 0, time.Now().Location()).UnixNano(),
    82  			fail:   false,
    83  		},
    84  		{
    85  			name: "mysql, 171113 14:14:20",
    86  			in:   `{"time":"211202 11:55:34"}`,
    87  			pl: `
    88  			json(_, time)
    89  			default_time(time)
    90  		`,
    91  			outkey: "time",
    92  			expect: int64(1638417334000000000),
    93  			fail:   false,
    94  		},
    95  		{
    96  			name: "gin, 2021/02/27 - 14:14:20",
    97  			in:   `{"time":"2021/12/02 - 11:55:34"}`,
    98  			pl: `
    99  			json(_, time)
   100  			default_time(time)
   101  		`,
   102  			outkey: "time",
   103  			expect: int64(1638417334000000000),
   104  			fail:   false,
   105  		},
   106  		{
   107  			name: "apache,  Tue May 18 06:25:05.176170 2021",
   108  			in:   `{"time":"Tue Dec 2 11:55:34.000000 2021"}`,
   109  			pl: `
   110  			json(_, time)
   111  			default_time(time)
   112  		`,
   113  			outkey: "time",
   114  			expect: int64(1638417334000000000),
   115  			fail:   false,
   116  		},
   117  		{
   118  			name: "postgresql, 2021-05-27 06:54:14.760 UTC",
   119  			in:   `{"time":"2021-12-02 11:55:34.000 UTC"}`,
   120  			pl: `
   121  			json(_, time)
   122  			default_time(time)
   123  		`,
   124  			outkey: "time",
   125  			expect: int64(1638417334000000000),
   126  			fail:   false,
   127  		},
   128  		{
   129  			name: "Dec 2, 2021 11:55:34 AM",
   130  			in:   `{"time":"Dec 2, 2021 11:55:34 AM"}`,
   131  			pl: `
   132  			json(_, time)
   133  			default_time(time)
   134  		`,
   135  			outkey: "time",
   136  			expect: int64(1638417334000000000),
   137  			fail:   false,
   138  		},
   139  		{
   140  			name: "Dec 2, 2021",
   141  			in:   `{"time":"Dec 2, 2021"}`,
   142  			pl: `
   143  			json(_, time)
   144  			default_time(time)
   145  		`,
   146  			outkey: "time",
   147  			expect: int64(1638374400000000000),
   148  			fail:   false,
   149  		},
   150  		{
   151  			name: "Dec 2, 2021 (tz: UTC)",
   152  			in:   `{"time":"Dec 2, 2021"}`,
   153  			pl: `
   154  			json(_, time)
   155  			default_time(time, "UTC")
   156  		`,
   157  			outkey: "time",
   158  			expect: int64(1638403200000000000),
   159  			fail:   false,
   160  		},
   161  		{
   162  			name: "dec 2, '21 (tz: UTC)",
   163  			in:   `{"time":"Dec 2, '21"}`,
   164  			pl: `
   165  			json(_, time)
   166  			default_time(time, "UTC")
   167  		`,
   168  			outkey: "time",
   169  			expect: int64(1638403200000000000),
   170  			fail:   false,
   171  		},
   172  		{
   173  			name: "Dec. 2, 2021 (tz: UTC)",
   174  			in:   `{"time":"Dec 2, 2021"}`,
   175  			pl: `
   176  			json(_, time)
   177  			default_time(time, "UTC")
   178  		`,
   179  			outkey: "time",
   180  			expect: int64(1638403200000000000),
   181  			fail:   false,
   182  		},
   183  		{
   184  			name: "Dec. 2, 21 (tz: UTC)",
   185  			in:   `{"time":"Dec 2, 21"}`,
   186  			pl: `
   187  			json(_, time)
   188  			default_time(time, "UTC")
   189  		`,
   190  			outkey: "time",
   191  			expect: int64(1638403200000000000),
   192  			fail:   false,
   193  		},
   194  		{
   195  			name: "Tue Dec  2 11:55:34 2021",
   196  			in:   `{"time":"Tue Dec  2 11:55:34 2021"}`,
   197  			pl: `
   198  			json(_, time)
   199  			default_time(time)
   200  		`,
   201  			outkey: "time",
   202  			expect: int64(1638417334000000000),
   203  			fail:   false,
   204  		},
   205  		{
   206  			name: "Tue Dec  2 11:55:34 CST 2021",
   207  			in:   `{"time":"Tue Dec  2 11:55:34 CST 2021"}`,
   208  			pl: `
   209  			json(_, time)
   210  			default_time(time)
   211  		`,
   212  			outkey: "time",
   213  			expect: int64(1638417334000000000),
   214  			fail:   false,
   215  		},
   216  		{
   217  			name: "Tue Dec 02 11:55:34 +0800 2021",
   218  			in:   `{"time":"Tue Dec 02 11:55:34 +0800 2021"}`,
   219  			pl: `
   220  			json(_, time)
   221  			default_time(time)
   222  		`,
   223  			outkey: "time",
   224  			expect: int64(1638417334000000000),
   225  			fail:   false,
   226  		},
   227  		{
   228  			name: "Tuesday, 02-Dec-21 11:55:34 CST",
   229  			in:   `{"time":"Tuesday, 02-Dec-21 11:55:34 CST"}`,
   230  			pl: `
   231  			json(_, time)
   232  			default_time(time)
   233  		`,
   234  			outkey: "time",
   235  			expect: int64(1638417334000000000),
   236  			fail:   false,
   237  		},
   238  		{
   239  			name: "Tue, 02 Dec 2021 11:55:34 CST",
   240  			in:   `{"time":"Tue, 02 Dec 2021 11:55:34 CST"}`,
   241  			pl: `
   242  			json(_, time)
   243  			default_time(time)
   244  		`,
   245  			outkey: "time",
   246  			expect: int64(1638417334000000000),
   247  			fail:   false,
   248  		},
   249  		{
   250  			name: "Tue, 02 Dec 2021 11:55:34 +0800 (CST)",
   251  			in:   `{"time":"Tue, 02 Dec 2021 11:55:34 +0800 (CST)"}`,
   252  			pl: `
   253  			json(_, time)
   254  			default_time(time)
   255  		`,
   256  			outkey: "time",
   257  			expect: int64(1638417334000000000),
   258  			fail:   false,
   259  		},
   260  		{
   261  			name: "Tue, 02 Dec 2021 11:55:34 +0800",
   262  			in:   `{"time":"Tue, 02 Dec 2021 11:55:34 +0800"}`,
   263  			pl: `
   264  			json(_, time)
   265  			default_time(time)
   266  		`,
   267  			outkey: "time",
   268  			expect: int64(1638417334000000000),
   269  			fail:   false,
   270  		},
   271  		{
   272  			name: "Tue 02 Dec 2021 11:55:34 AM CST",
   273  			in:   `{"time":"Tue 02 Dec 2021 11:55:34 AM CST"}`,
   274  			pl: `
   275  			json(_, time)
   276  			default_time(time)
   277  		`,
   278  			outkey: "time",
   279  			expect: int64(1638417334000000000),
   280  			fail:   false,
   281  		},
   282  		{
   283  			name: "Tue Dec 2 11:55:34 UTC+0800 2021",
   284  			in:   `{"time":"Tue 02 Dec 2021 11:55:34 AM CST"}`,
   285  			pl: `
   286  			json(_, time)
   287  			default_time(time)
   288  		`,
   289  			outkey: "time",
   290  			expect: int64(1638417334000000000),
   291  			fail:   false,
   292  		},
   293  		{
   294  			name: "Tue, 2 Dec 2021 11:55:34 +0800",
   295  			in:   `{"time":"Tue, 2 Dec 2021 11:55:34 +0800"}`,
   296  			pl: `
   297  			json(_, time)
   298  			default_time(time)
   299  		`,
   300  			outkey: "time",
   301  			expect: int64(1638417334000000000),
   302  			fail:   false,
   303  		},
   304  		{
   305  			name: "Tue Dec 02 2021 11:55:34 GMT+0800 (GMT Daylight Time)",
   306  			in:   `{"time":"Tue Dec 02 2021 11:55:34 GMT+0800 (GMT Daylight Time)"}`,
   307  			pl: `
   308  			json(_, time)
   309  			default_time(time)
   310  		`,
   311  			outkey: "time",
   312  			expect: int64(1638417334000000000),
   313  			fail:   false,
   314  		},
   315  		{
   316  			name: "December 02, 2021 11:55:34am",
   317  			in:   `{"time":"December 02, 2021 11:55:34am"}`,
   318  			pl: `
   319  			json(_, time)
   320  			default_time(time)
   321  		`,
   322  			outkey: "time",
   323  			expect: int64(1638417334000000000),
   324  			fail:   false,
   325  		},
   326  		{
   327  			name: "December 02, 2021 at 11:55:34am CST+08",
   328  			in:   `{"time":"December 02, 2021 at 11:55:34am CST+08"}`,
   329  			pl: `
   330  			json(_, time)
   331  			default_time(time)
   332  		`,
   333  			outkey: "time",
   334  			expect: int64(1638417334000000000),
   335  			fail:   false,
   336  		},
   337  		{
   338  			name: "December 02, 2021 at 11:55:34am CST+08",
   339  			in:   `{"time":"December 02, 2021 at 11:55:34am CST+08"}`,
   340  			pl: `
   341  			json(_, time)
   342  			default_time(time)
   343  		`,
   344  			outkey: "time",
   345  			expect: int64(1638417334000000000),
   346  			fail:   false,
   347  		},
   348  		{
   349  			name: "December 02, 2021 at 11:55am CST+08",
   350  			in:   `{"time":"December 02, 2021 at 11:55am CST+08"}`,
   351  			pl: `
   352  			json(_, time)
   353  			default_time(time)
   354  		`,
   355  			outkey: "time",
   356  			expect: int64(1638417300000000000),
   357  			fail:   false,
   358  		},
   359  		{
   360  			name: "December 02, 2021, 11:55:34",
   361  			in:   `{"time":"December 02, 2021, 11:55:34"}`,
   362  			pl: `
   363  			json(_, time)
   364  			default_time(time)
   365  		`,
   366  			outkey: "time",
   367  			expect: int64(1638417334000000000),
   368  			fail:   false,
   369  		},
   370  		{
   371  			name: "December 2, 2021",
   372  			in:   `{"time":"December 2, 2021"}`,
   373  			pl: `
   374  			json(_, time)
   375  			default_time(time)
   376  		`,
   377  			outkey: "time",
   378  			expect: int64(1638374400000000000),
   379  			fail:   false,
   380  		},
   381  		{
   382  			name: "December 2th, 2021",
   383  			in:   `{"time":"December 2th, 2021"}`,
   384  			pl: `
   385  			json(_, time)
   386  			default_time(time)
   387  		`,
   388  			outkey: "time",
   389  			expect: int64(1638374400000000000),
   390  			fail:   false,
   391  		},
   392  		{
   393  			name: "02 Dec 2021, 11:55",
   394  			in:   `{"time":"02 Dec 2021, 11:55"}`,
   395  			pl: `
   396  			json(_, time)
   397  			default_time(time)
   398  		`,
   399  			outkey: "time",
   400  			expect: int64(1638417300000000000),
   401  			fail:   false,
   402  		},
   403  		{
   404  			name: "2 Dec 2021, 11:55",
   405  			in:   `{"time":"2 Dec 2021, 11:55"}`,
   406  			pl: `
   407  			json(_, time)
   408  			default_time(time)
   409  		`,
   410  			outkey: "time",
   411  			expect: int64(1638417300000000000),
   412  			fail:   false,
   413  		},
   414  		{
   415  			name: "2 Dec 21",
   416  			in:   `{"time":"2 Dec 21"}`,
   417  			pl: `
   418  			json(_, time)
   419  			default_time(time)
   420  		`,
   421  			outkey: "time",
   422  			expect: int64(1638374400000000000),
   423  			fail:   false,
   424  		},
   425  		{
   426  			name: "2 Dec 2021",
   427  			in:   `{"time":"2 Dec 2021"}`,
   428  			pl: `
   429  			json(_, time)
   430  			default_time(time)
   431  		`,
   432  			outkey: "time",
   433  			expect: int64(1638374400000000000),
   434  			fail:   false,
   435  		},
   436  		{
   437  			name: "02 December 2021",
   438  			in:   `{"time":"02 December 2021"}`,
   439  			pl: `
   440  			json(_, time)
   441  			default_time(time)
   442  		`,
   443  			outkey: "time",
   444  			expect: int64(1638374400000000000),
   445  			fail:   false,
   446  		},
   447  		{
   448  			name: "2 December 2021",
   449  			in:   `{"time":"2 December 2021"}`,
   450  			pl: `
   451  			json(_, time)
   452  			default_time(time)
   453  		`,
   454  			outkey: "time",
   455  			expect: int64(1638374400000000000),
   456  			fail:   false,
   457  		},
   458  		{
   459  			name: "2021-Dec-02",
   460  			in:   `{"time":"2021-Dec-02"}`,
   461  			pl: `
   462  			json(_, time)
   463  			default_time(time)
   464  		`,
   465  			outkey: "time",
   466  			expect: int64(1638374400000000000),
   467  			fail:   false,
   468  		},
   469  		// mm/dd/yy
   470  		{
   471  			name: "12/2/2021",
   472  			in:   `{"time":"12/2/2021"}`,
   473  			pl: `
   474  			json(_, time)
   475  			default_time(time)
   476  		`,
   477  			outkey: "time",
   478  			expect: int64(1638374400000000000),
   479  			fail:   false,
   480  		},
   481  		{
   482  			name: "12/02/2021",
   483  			in:   `{"time":"12/02/2021"}`,
   484  			pl: `
   485  			json(_, time)
   486  			default_time(time)
   487  		`,
   488  			outkey: "time",
   489  			expect: int64(1638374400000000000),
   490  			fail:   false,
   491  		},
   492  		{
   493  			name: "12/2/21",
   494  			in:   `{"time":"12/2/21"}`,
   495  			pl: `
   496  			json(_, time)
   497  			default_time(time)
   498  		`,
   499  			outkey: "time",
   500  			expect: int64(1638374400000000000),
   501  			fail:   false,
   502  		},
   503  		{
   504  			name: "12/2/2021 11:55",
   505  			in:   `{"time":"12/2/2021 11:55"}`,
   506  			pl: `
   507  			json(_, time)
   508  			default_time(time)
   509  		`,
   510  			outkey: "time",
   511  			expect: int64(1638417300000000000),
   512  			fail:   false,
   513  		},
   514  		{
   515  			name: "12/02/2021 11:55",
   516  			in:   `{"time":"12/02/2021 11:55"}`,
   517  			pl: `
   518  			json(_, time)
   519  			default_time(time)
   520  		`,
   521  			outkey: "time",
   522  			expect: int64(1638417300000000000),
   523  			fail:   false,
   524  		},
   525  		{
   526  			name: "12/02/2021 11:55:43",
   527  			in:   `{"time":"12/02/2021 11:55:43"}`,
   528  			pl: `
   529  			json(_, time)
   530  			default_time(time)
   531  		`,
   532  			outkey: "time",
   533  			expect: int64(1638417343000000000),
   534  			fail:   false,
   535  		},
   536  		{
   537  			name: "12/02/2021 11:55:43 AM",
   538  			in:   `{"time":"12/02/2021 11:55:43 AM"}`,
   539  			pl: `
   540  			json(_, time)
   541  			default_time(time)
   542  		`,
   543  			outkey: "time",
   544  			expect: int64(1638417343000000000),
   545  			fail:   false,
   546  		},
   547  		{
   548  			name: "12/02/2021 11:55 AM",
   549  			in:   `{"time":"12/02/2021 11:55 AM"}`,
   550  			pl: `
   551  			json(_, time)
   552  			default_time(time)
   553  		`,
   554  			outkey: "time",
   555  			expect: int64(1638417300000000000),
   556  			fail:   false,
   557  		},
   558  		{
   559  			name: "12/02/2021 11:55 11:55:43",
   560  			in:   `{"time":"12/02/2021 11:55:43"}`,
   561  			pl: `
   562  			json(_, time)
   563  			default_time(time)
   564  		`,
   565  			outkey: "time",
   566  			expect: int64(1638417343000000000),
   567  			fail:   false,
   568  		},
   569  		{
   570  			name: "12/02/2021 11:55 11:55:43.9999999",
   571  			in:   `{"time":"12/02/2021 11:55:43.9999999"}`,
   572  			pl: `
   573  			json(_, time)
   574  			default_time(time)
   575  		`,
   576  			outkey: "time",
   577  			expect: int64(1638417343999999900),
   578  			fail:   false,
   579  		},
   580  		//yyyy:mm:dd
   581  		{
   582  			name: "2021:12:2",
   583  			in:   `{"time":"2021:12:2"}`,
   584  			pl: `
   585  			json(_, time)
   586  			default_time(time)
   587  		`,
   588  			outkey: "time",
   589  			expect: int64(1638374400000000000),
   590  			fail:   false,
   591  		},
   592  		{
   593  			name: "2021:12:02",
   594  			in:   `{"time":"2021:12:02"}`,
   595  			pl: `
   596  			json(_, time)
   597  			default_time(time)
   598  		`,
   599  			outkey: "time",
   600  			expect: int64(1638374400000000000),
   601  			fail:   false,
   602  		},
   603  		{
   604  			name: "2021:12:2 11:55",
   605  			in:   `{"time":"2021:12:2 11:55"}`,
   606  			pl: `
   607  			json(_, time)
   608  			default_time(time)
   609  			`,
   610  			outkey: "time",
   611  			expect: int64(1638417300000000000),
   612  		},
   613  		{
   614  			name: "2021:12:02 11:55",
   615  			in:   `{"time":"2021:12:02 11:55"}`,
   616  			pl: `
   617  			json(_, time)
   618  			default_time(time)
   619  			`,
   620  			outkey: "time",
   621  			expect: int64(1638417300000000000),
   622  		},
   623  		{
   624  			name: "2021:12:02 11:55:43",
   625  			in:   `{"time":"2021:12:02 11:55:43"}`,
   626  			pl: `
   627  			json(_, time)
   628  			default_time(time)
   629  			`,
   630  			outkey: "time",
   631  			expect: int64(1638417343000000000),
   632  		},
   633  		{
   634  			name: "2021:12:2 12:55:43",
   635  			in:   `{"time":"2021:12:2 12:55:43"}`,
   636  			pl: `
   637  			json(_, time)
   638  			default_time(time, "Asia/Tokyo")
   639  			`,
   640  			outkey: "time",
   641  			expect: int64(1638417343000000000),
   642  		},
   643  		{
   644  			name: "2021:12:2 11:55:43",
   645  			in:   `{"time":"2021:12:2 11:55:43.89555"}`,
   646  			pl: `
   647  			json(_, time)
   648  			default_time(time)
   649  			`,
   650  			outkey: "time",
   651  			expect: int64(1638417343895550000),
   652  		},
   653  		{
   654  			name: "2021年11月02日",
   655  			in:   `{"time":"2021年12月02日"}`,
   656  			pl: `
   657  			json(_, time)
   658  			default_time(time)
   659  		`,
   660  			outkey: "time",
   661  			expect: int64(1638374400000000000),
   662  		},
   663  		// yyyy-mm-ddThhs
   664  		{
   665  			name: "2021-12-2T11:55:43+0800",
   666  			in:   `{"time":"2021:12:2 11:55:43"}`,
   667  			pl: `
   668  			json(_, time)
   669  			default_time(time)
   670  			`,
   671  			outkey: "time",
   672  			expect: int64(1638417343000000000),
   673  		},
   674  		{
   675  			name: "2021-12-2T11:55:43+08:00",
   676  			in:   `{"time":"2021-12-2T11:55:43+08:00"}`,
   677  			pl: `
   678  			json(_, time)
   679  			default_time(time)
   680  			`,
   681  			outkey: "time",
   682  			expect: int64(1638417343000000000),
   683  		},
   684  		{
   685  			name: "2021-12-2T11:55:43",
   686  			in:   `{"time":"2021-12-2T11:55:43"}`,
   687  			pl: `
   688  			json(_, time)
   689  			default_time(time)
   690  			`,
   691  			outkey: "time",
   692  			expect: int64(1638417343000000000),
   693  		},
   694  		{
   695  			name: "2021-12-2T3:55:43Z",
   696  			in:   `{"time":"2021-12-2T3:55:43Z"}`,
   697  			pl: `
   698  			json(_, time)
   699  			default_time(time)
   700  			`,
   701  			outkey: "time",
   702  			expect: int64(1638417343000000000),
   703  		},
   704  		// yyyy-mm-dd hh:mm:ss
   705  		{
   706  			name: "2021-12-2 11:55:43.12223",
   707  			in:   `{"time":"2021-12-2 11:55:43.12223"}`,
   708  			pl: `
   709  			json(_, time)
   710  			default_time(time)
   711  			`,
   712  			outkey: "time",
   713  			expect: int64(1638417343122230000),
   714  		},
   715  		{
   716  			name: "2021-12-2 11:55:43.122230000",
   717  			in:   `{"time":"2021-12-2 11:55:43.122230000"}`,
   718  			pl: `
   719  			json(_, time)
   720  			default_time(time)
   721  			`,
   722  			outkey: "time",
   723  			expect: int64(1638417343122230000),
   724  		},
   725  		{
   726  			name: "2021-12-2 11:55",
   727  			in:   `{"time":"2021-12-2 11:55"}`,
   728  			pl: `
   729  			json(_, time)
   730  			default_time(time)
   731  			`,
   732  			outkey: "time",
   733  			expect: int64(1638417300000000000),
   734  		},
   735  		{
   736  			name: "2021-12-2 11:55:43",
   737  			in:   `{"time":"2021-12-2 11:55:43"}`,
   738  			pl: `
   739  			json(_, time)
   740  			default_time(time)
   741  			`,
   742  			outkey: "time",
   743  			expect: int64(1638417343000000000),
   744  		},
   745  		{
   746  			name: "2021-12-2 11:55:43 UTC",
   747  			in:   `{"time":"2021-12-2 11:55:43 UTC"}`,
   748  			pl: `
   749  			json(_, time)
   750  			default_time(time)
   751  			`,
   752  			outkey: "time",
   753  			expect: int64(1638417343000000000),
   754  		},
   755  		{
   756  			name: "2021-12-2 11:55:43 GMT",
   757  			in:   `{"time":"2021-12-2 11:55:43 GMT"}`,
   758  			pl: `
   759  			json(_, time)
   760  			default_time(time)
   761  			`,
   762  			outkey: "time",
   763  			expect: int64(1638417343000000000),
   764  		},
   765  		{
   766  			name: "2021-12-2 11:55:43 CST",
   767  			in:   `{"time":"2021-12-2 11:55:43 CST"}`,
   768  			pl: `
   769  			json(_, time)
   770  			default_time(time)
   771  			`,
   772  			outkey: "time",
   773  			expect: int64(1638417343000000000),
   774  		},
   775  		{
   776  			name: "2021-12-2 11:55:43 AM",
   777  			in:   `{"time":"2021-12-2 11:55:43 AM"}`,
   778  			pl: `
   779  			json(_, time)
   780  			default_time(time)
   781  			`,
   782  			outkey: "time",
   783  			expect: int64(1638417343000000000),
   784  		},
   785  		{
   786  			name: "2021-12-2 11:55:43 +0800",
   787  			in:   `{"time":"2021-12-2 11:55:43 +0800"}`,
   788  			pl: `
   789  			json(_, time)
   790  			default_time(time)
   791  			`,
   792  			outkey: "time",
   793  			expect: int64(1638417343000000000),
   794  		},
   795  		{
   796  			name: "2021-12-2 11:55:43 +0800 +08",
   797  			in:   `{"time":"2021-12-2 11:55:43 +0800 +08"}`,
   798  			pl: `
   799  			json(_, time)
   800  			default_time(time)
   801  			`,
   802  			outkey: "time",
   803  			expect: int64(1638417343000000000),
   804  		},
   805  		{
   806  			name: "2021-12-2 11:55:43 +08:00",
   807  			in:   `{"time":"2021-12-2 11:55:43 +08:00"}`,
   808  			pl: `
   809  			json(_, time)
   810  			default_time(time)
   811  			`,
   812  			outkey: "time",
   813  			expect: int64(1638417343000000000),
   814  		},
   815  		{
   816  			name: "2021-12-2 3:55:43.1 +0000 UTC",
   817  			in:   `{"time":"2021-12-2 3:55:43.1 +0000 UTC"}`,
   818  			pl: `
   819  			json(_, time)
   820  			default_time(time)
   821  			`,
   822  			outkey: "time",
   823  			expect: int64(1638417343100000000),
   824  		},
   825  		{
   826  			name: "2021-12-2 11:55:43.1 +0800 UTC",
   827  			in:   `{"time":"2021-12-2 11:55:43.1 +0800 UTC"}`,
   828  			pl: `
   829  			json(_, time)
   830  			default_time(time)
   831  			`,
   832  			outkey: "time",
   833  			expect: int64(1638417343100000000),
   834  		},
   835  		{
   836  			name: "2021-12-2 11:55:43 +0800 UTC",
   837  			in:   `{"time":"2021-12-2 11:55:43 +0800 UTC"}`,
   838  			pl: `
   839  			json(_, time)
   840  			default_time(time)
   841  			`,
   842  			outkey: "time",
   843  			expect: int64(1638417343000000000),
   844  		},
   845  		{
   846  			name: "2021-12-2 11:55:43 +0800 GMT",
   847  			in:   `{"time":"2021-12-2 11:55:43 +0800 GMT"}`,
   848  			pl: `
   849  			json(_, time)
   850  			default_time(time)
   851  			`,
   852  			outkey: "time",
   853  			expect: int64(1638417343000000000),
   854  		},
   855  		{
   856  			name: "2021-12-2 11:55:43 +0800 GMT m=+0.000000001",
   857  			in:   `{"time":"2021-12-2 11:55:43 +0800 GMT m=+0.000000001"}`,
   858  			pl: `
   859  			json(_, time)
   860  			default_time(time)
   861  			`,
   862  			outkey: "time",
   863  			expect: int64(1638417343000000000),
   864  		},
   865  		{
   866  			name: "2021-12-2 11:55:43.0001 +0800 GMT m=+0.000000001",
   867  			in:   `{"time":"2021-12-2 11:55:43.0001 +0800 GMT m=+0.000000001"}`,
   868  			pl: `
   869  			json(_, time)
   870  			default_time(time)
   871  			`,
   872  			outkey: "time",
   873  			expect: int64(1638417343000100000),
   874  		},
   875  		{
   876  			name: "2021-12-2 11:55:43+08:00",
   877  			in:   `{"time":"2021-12-2 11:55:43+08:00"}`,
   878  			pl: `
   879  			json(_, time)
   880  			default_time(time)
   881  			`,
   882  			outkey: "time",
   883  			expect: int64(1638417343000000000),
   884  		},
   885  		{
   886  			name: "2021-12-02",
   887  			in:   `{"time":"2021-12-02"}`,
   888  			pl: `
   889  			json(_, time)
   890  			default_time(time)
   891  		`,
   892  			outkey: "time",
   893  			expect: int64(1638374400000000000),
   894  			fail:   false,
   895  		},
   896  		{
   897  			name: "2021-12",
   898  			in:   `{"time":"2021-12"}`,
   899  			pl: `
   900  			json(_, time)
   901  			default_time(time)
   902  		`,
   903  			outkey: "time",
   904  			expect: int64(1638288000000000000),
   905  			fail:   false,
   906  		},
   907  		{
   908  			name: "2021",
   909  			in:   `{"time":"2021"}`,
   910  			pl: `
   911  			json(_, time)
   912  			default_time(time)
   913  		`,
   914  			outkey: "time",
   915  			expect: int64(1609430400000000000),
   916  			fail:   false,
   917  		},
   918  		{
   919  			name: "2021-12-2 11:55:43,212",
   920  			in:   `{"time":"2021-12-2 11:55:43,212"}`,
   921  			pl: `
   922  			json(_, time)
   923  			default_time(time)
   924  			`,
   925  			outkey: "time",
   926  			expect: int64(1638417343212000000),
   927  		},
   928  		// mm.dd.yy
   929  		{
   930  			name: "12.2.2021",
   931  			in:   `{"time":"12.2.2021"}`,
   932  			pl: `
   933  			json(_, time)
   934  			default_time(time)
   935  			`,
   936  			outkey: "time",
   937  			expect: int64(1638374400000000000),
   938  		},
   939  		{
   940  			name: "12.02.2021",
   941  			in:   `{"time":"12.02.2021"}`,
   942  			pl: `
   943  			json(_, time)
   944  			default_time(time)
   945  			`,
   946  			outkey: "time",
   947  			expect: int64(1638374400000000000),
   948  		},
   949  		{
   950  			name: "12.02.21",
   951  			in:   `{"time":"12.02.21"}`,
   952  			pl: `
   953  			json(_, time)
   954  			default_time(time)
   955  			`,
   956  			outkey: "time",
   957  			expect: int64(1638374400000000000),
   958  		},
   959  		{
   960  			name: "2021.12",
   961  			in:   `{"time":"2021.12"}`,
   962  			pl: `
   963  			json(_, time)
   964  			default_time(time)
   965  		`,
   966  			outkey: "time",
   967  			expect: int64(1638288000000000000),
   968  			fail:   false,
   969  		},
   970  		{
   971  			name: "2021.12.02",
   972  			in:   `{"time":"2021.12.02"}`,
   973  			pl: `
   974  			json(_, time)
   975  			default_time(time)
   976  		`,
   977  			outkey: "time",
   978  			expect: int64(1638374400000000000),
   979  			fail:   false,
   980  		},
   981  		// yyyymmdd and similar
   982  		{
   983  			name: "20211202",
   984  			in:   `{"time":"20211202"}`,
   985  			pl: `
   986  			json(_, time)
   987  			default_time(time)
   988  		`,
   989  			outkey: "time",
   990  			expect: int64(1638374400000000000),
   991  			fail:   false,
   992  		},
   993  		{
   994  			name: "20211202115543",
   995  			in:   `{"time":"20211202115543"}`,
   996  			pl: `
   997  			json(_, time)
   998  			default_time(time)
   999  		`,
  1000  			outkey: "time",
  1001  			expect: int64(1638417343000000000),
  1002  			fail:   false,
  1003  		},
  1004  		// unix seconds, ms, micro, nano
  1005  		{
  1006  			name: "1638417343",
  1007  			in:   `{"time":"1638417343"}`,
  1008  			pl: `
  1009  			json(_, time)
  1010  			default_time(time)
  1011  		`,
  1012  			outkey: "time",
  1013  			expect: int64(1638417343000000000),
  1014  			fail:   false,
  1015  		},
  1016  		{
  1017  			name: "1638417343001",
  1018  			in:   `{"time":"1638417343001"}`,
  1019  			pl: `
  1020  			json(_, time)
  1021  			default_time(time)
  1022  		`,
  1023  			outkey: "time",
  1024  			expect: int64(1638417343001000000),
  1025  			fail:   false,
  1026  		},
  1027  		{
  1028  			name: "1638417343001002",
  1029  			in:   `{"time":"1638417343001002"}`,
  1030  			pl: `
  1031  			json(_, time)
  1032  			default_time(time)
  1033  		`,
  1034  			outkey: "time",
  1035  			expect: int64(1638417343001002000),
  1036  			fail:   false,
  1037  		},
  1038  		{
  1039  			name: "1638417343001002003",
  1040  			in:   `{"time":"1638417343001002003"}`,
  1041  			pl: `
  1042  			json(_, time)
  1043  			default_time(time)
  1044  		`,
  1045  			outkey: "time",
  1046  			expect: int64(1638417343001002003),
  1047  			fail:   false,
  1048  		},
  1049  		{
  1050  			name: "Dec 2, 2021 (tz: UTC)",
  1051  			in:   `{"time":"Dec 2, 2021"}`,
  1052  			pl: `
  1053  			json(_, time)
  1054  			default_time(time, "+0")
  1055  		`,
  1056  			outkey: "time",
  1057  			expect: int64(1638403200000000000),
  1058  			fail:   false,
  1059  		},
  1060  		{
  1061  			name: "Tue Dec  2 11:55:34 CST 2021",
  1062  			in:   `{"time":"Tue Dec  2 11:55:34 CST 2021"}`,
  1063  			pl: `
  1064  			json(_, time)
  1065  			default_time(time, "+8")
  1066  		`,
  1067  			outkey: "time",
  1068  			expect: int64(1638417334000000000),
  1069  			fail:   false,
  1070  		},
  1071  	}
  1072  
  1073  	for idx, tc := range cases {
  1074  		t.Run(tc.name, func(t *testing.T) {
  1075  			runner, err := NewTestingRunner(tc.pl)
  1076  			if err != nil {
  1077  				if tc.fail {
  1078  					t.Logf("[%d]expect error: %s", idx, err)
  1079  				} else {
  1080  					t.Errorf("[%d] failed: %s", idx, err)
  1081  				}
  1082  				return
  1083  			}
  1084  
  1085  			pt := ptinput.NewPlPoint(
  1086  				point.Logging, "test", nil, map[string]any{"message": tc.in}, time.Now())
  1087  			errR := runScript(runner, pt)
  1088  			if errR != nil {
  1089  				t.Fatal(errR)
  1090  			}
  1091  
  1092  			pt.KeyTime2Time()
  1093  
  1094  			var v interface{}
  1095  			if tc.outkey != "time" && tc.outkey != "" {
  1096  				v, _, _ = pt.Get(tc.outkey)
  1097  			} else {
  1098  				v = pt.PtTime().UnixNano()
  1099  			}
  1100  			tu.Equals(t, tc.expect, v)
  1101  			t.Logf("[%d] PASS", idx)
  1102  		})
  1103  	}
  1104  }