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 }