diff --git a/etc/certs/cacert.pem b/etc/certs/cacert.pem index e7a47507a..c6b117181 100644 --- a/etc/certs/cacert.pem +++ b/etc/certs/cacert.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC0TCCAbmgAwIBAgIUEPaE+Ng1GAlWSNjy0E1taW4f22EwDQYJKoZIhvcNAQEL -BQAwEzERMA8GA1UEAwwITXlUZXN0Q0EwHhcNMTkxMTE1MDM1OTMzWhcNMjkxMTEy -MDM1OTMzWjATMREwDwYDVQQDDAhNeVRlc3RDQTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBALjYGt1F9voz36yVij74QyzlzeXcQoxv5xpmeApjo4ofCYAD -yqA83hFh2DVy+ogZCNC+xuceRNx3l6OP3PDIaLJHTUuXxDqtbx8YMnNrBGbdvXYR -gjdfVs8fk9D5xdXJN3kCcIsbbxajXq/Yo+WzPfBqqcYlgeNCMWFq1KHPpYKa3kCx -GNjyBuvwyMbKVef5Y1DxYu1ynF3oKUzYg/q5kmv+/rOj6jvL2C+uWPt5F+4hDDDS -3PNuey+1x4LaurWw9yN3OvRDQG53LaSxTxCjkIGVMKvtwnSawEB3cUgvF21Whddf -iCoi1Ta46cw4P5P018YCkhqrTAGdh5cHIltzLcMCAwEAAaMdMBswDAYDVR0TBAUw -AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAAQ22M/hk1NxQF8W -M8FViIGMNdkcN5vekfhsSZhzEZu8H7elwt7m5t/VGzq4mB9Qq7KzcYr2IRP3x1SX -OYm9iLiXQqatHrb/915SwvXiNrLp8sZOPLYBQXCghi+mh6YIiAz4976SLgmAhBK3 -uK1KtAUfzFT1xxbm4LQaJqDaBE86tMiGleTbKmwsJa06CIG8HPi7LQ5NQvjkXV5d -I5A4rdxNImO0dodr7o9CxGvVy+MGtrlK5Kbpylma5Xyhr95ZJr+ozgd6gw/17aAO -FfsAJ9TNRYqwgdn0qxkQiBg9szMCFjL3D1ag8uquyOc268AMZEf/iOuDAfZJNWrU -Bnq6OBQ= +MIIC0TCCAbmgAwIBAgIUDQN8HojZmyEV9+AzEz6j6juwThswDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwITXlUZXN0Q0EwHhcNMTkxMTE1MDcyNjU4WhcNMjkxMTEy +MDcyNjU4WjATMREwDwYDVQQDDAhNeVRlc3RDQTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBALce8QYBpl7fxEhwW0wtBQygXisMcPTKzckz3RhU21TeqK1Z +6Fm03QyYvB239oYJLodVwzv5SNI75hZ43Vyp+SHt3M3DjcsU/8PflxFK4QR7TdhI +ddn6R59Gqt0MhAZ/df2dYt7cMaQV8/5plzxLvrv9X2fwo8BYAGp6g6wGAL8SJDT9 +jd9TGzBG/o3dLu3keEwcl0CMq3qUwxatBHMe2s7COKBrngD/CvRAL8tG3VTj7ep9 +n29SSS8qMzHhJdBahTDrYS+SeW61iFK1yLXSxCWNoMB0/g7/AktWuAXHdHRX9xaf +WNJ4RdoPxhqkVJ8SrC4JtC8ah6DchVysWnz2KwMCAwEAAaMdMBswDAYDVR0TBAUw +AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAEgnPnHLdivykReJ +I8xf5DeWsgBUdVvhxz2E9Ole/u6ThulNLziwHernkTprskiKFJaF67ZzS7YddTdf +WsS0H5LhYaft5NnBcn9UHCKEycyr3AJZ6joB3Dd9CfMQEscnZHNmIXwPGxw4bYP6 +AElF0Iy7LY/Z8po/UACTBzCCSf5UkZ9Jy/rzxuvn/cfPcLNhDWk8b8MbmOfuyNPV +SfPGn7wXIt9iyyA4qyzEVMaXl8d94E48dV5Fc1sQEEo6gk16dQ9p64ePMvUih6an +kSz9X/n1+9sHq54pJmLZ2gfRvGPIPVIipSjAj4sjHvKzuC3CQTTXs9HzmN2nT0zx +gLxgEkY= -----END CERTIFICATE----- diff --git a/etc/certs/cert.pem b/etc/certs/cert.pem index fb76ecde6..f6187c3f6 100644 --- a/etc/certs/cert.pem +++ b/etc/certs/cert.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC6jCCAdKgAwIBAgIBATANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhNeVRl -c3RDQTAeFw0xNzExMDIxMzQyNDhaFw0xOTExMDIxMzQyNDhaMC0xGjAYBgNVBAMT -EU1hY0Jvb2stQWlyLmxvY2FsMQ8wDQYDVQQKEwZzZXJ2ZXIwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDUO/kL3ar3WsopPF12qAf+cwDHklGJIxJsjdoZ -XgI1lPEe1W1QXwb/G/tyf6Fj2J8CD5bfsRjDxAemFIBVrFwlunCk+Gs6xR7vzz4O -Fonoj4pmleruLQrNY/bHa2WN97OdISyXzhOgDwSaqobnF0n/f0Mx+9sdHO3p8LNB -3JXUyBpwDNr/TTfAb4pbQEu3LF4p7uyd1eLhKzUxSiWzKtjB1EYObA87fZu0tBJZ -iGujuFiI7tf4qWKeuAoRa/cXkgVZhk0utYauDoa7qBZ5O6ZdEko9ov0+i5+1JGU/ -w5wrSPNAnM2lYVUn0kJmcV2gwa4RZFjdqp+/Fx+HnKbnhZEnAgMBAAGjLzAtMAkG -A1UdEwQCMAAwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqG -SIb3DQEBCwUAA4IBAQByWhNxX/L5QYBiMY4JM1RRciV4uI3F2vsc0yMFDSrZza+5 -tNJQS86hjQsCRZh9VshezvT7k1yVsAC4pnu2pzob8H3KG4vYBafMdl2Ghgv3RMix -J3NrBhcoYYhXEoZHost+htxEi7P3QBo/qDkk48/d30+aDPbms6kQd8Fj8+C5tD3b -aznO5Qlni72uTaM7fNA8exoc/YZc83lsqv7v+UzNQR595jnYSIAZcgil1qqygOan -Zx/RsMGUz6EYI9lPpoyyVtw13SoQshfgwvUlvBMiekSuI/pp6N7QPK6C8DLO0tVv -gXJjDgioqHc3hcgG4cskLbfVnohiwdhQTFayrLEk +MIIC5zCCAc+gAwIBAgIBATANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhNeVRl +c3RDQTAeFw0xOTExMTUwNzI2NThaFw0yMTExMTQwNzI2NThaMCoxFzAVBgNVBAMM +DjAwMDQubm92YWxvY2FsMQ8wDQYDVQQKDAZzZXJ2ZXIwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDC5JE48PJ/BFTLEseEbrGIdYB6w29hme4KFKmAqlLQ +kpwwZJAsm/9iuXy6svJf7Tzzc173Jkgzw7DzhzSf1VgRDrOCQS+IU6s8UXfUMJt/ +AmP1SkU2mUJ/+pnEGRKtVkF9LCScinI95Iwt3xngdjMYXwk+S9Le3/8782ClBwZG +vffXQ7hd5HnShgyqFVePgrKmr879NTylfvAWPwux2kdXNnbOHIrhcZm0NeMNf7hs +UNURFlqo4rA0FV9dIHMryPkM7ygoaMog2XmcCnq/jf/MfPTQPYjQ9iLPOGrYi0pY +X12uFb55duRGsvs7MIkNc8fn2VERoC69QX+GK+zAUGZ/AgMBAAGjLzAtMAkGA1Ud +EwQCMAAwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3 +DQEBCwUAA4IBAQBpW7Ge5duo6/u3xIl0XhG/2dlSwlUUpO3Ecc13gmh44nJR66VH +BEiimsol6gIgcSTk4pVY1DLb/09Nwv0TILl3Dc4QtXhM4gIlNRR79mLVsnPTef5e +xkmesQaLihSCroHq8bONnO/Xgj5hCg8uI4j3vHtOikjABxQPOrCfc2uSrenU7aol +1HBijCY6R+pg6WxBOZ2Teiaoxjn78IxSKLXW0pLRJIPpet1hefR0sKkmPfVGyg8H +g7hqo+Houw8PQf2HLZnU656vyTlgIh6ES1x7Plb0cIw/LGr4rMkXs+DFg9SLbetT +ncT4plfucsek7ImN9Dw2w2hM2FZwB8ycZfmu -----END CERTIFICATE----- diff --git a/etc/certs/client-cert.pem b/etc/certs/client-cert.pem index fc89298a9..50d5148f8 100644 --- a/etc/certs/client-cert.pem +++ b/etc/certs/client-cert.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC3DCCAcSgAwIBAgIBATANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhNeVRl -c3RDQTAeFw0xOTExMTUwMzU5MzRaFw0yMTExMTQwMzU5MzRaMB8xDDAKBgNVBAMM -A0VNUTEPMA0GA1UECgwGY2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAxxRoYquZ8DIN9dWodPP0lEYw7VGkTpLxsEcjBpGW2zN4SvSwX400QlV3 -xPcTSJJzYWY2MTiyIVEtS/TRw6fhOgkuoB0Y3kUBauEOieYYi/2oV408eR8OMIOc -fngBRGUgnlWLyocI1OK0xjSg0ov7dtlWIayVOpSFnfnkUC4Mf0ErXBFG5xHQaHdp -9EnFoRajeUUG9ZdeOkQ7UjeOOWLTa4MtVpZLvuIO5RB8cd2cyqQdV2txdfsmu6cV -lm3R5pg7UXSYtyjte5fIWlEWoinfAYhGC9vOY3n+hl1cX1+2asAYYZyeJ7lxdISB -dZCROVak2CLO1R4WFWdsO27TTC+vvQIDAQABoy8wLTAJBgNVHRMEAjAAMAsGA1Ud -DwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEA -WNpH7OwXcdUOANnpsG0kXYuOuOqCtxxVcpIo6817YHIdFxhcIMC1pvKX3JLqslJm -buLVS91D20TddUEdqkIYEHQh5dYLcoi1fZ5BZRc84B2isDfx4MBZx87ehxKRpEAR -g74VOnm0wZRV6MKrRkcPXJTWsr9nWHpBSDR6+LIHCBewn4WbXym6Pn84ucF729FB -Xt4HPSzYLz1/xOydCClj2PfcrrnSNkjjZm7nB7nnv3hBKyaniNhCTM0L1RHdJDvF -vbsZbWAlT3yAPrpEJELkZPaafDwXlRiPPcmDgqgu3PY2QNqVyiGuwlsMWdF8Glfg -ct1A8LN5wq2zmUAfFBrDCg== +MIIC5zCCAc+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhNeVRl +c3RDQTAeFw0xOTExMTUwNzI2NThaFw0yMTExMTQwNzI2NThaMCoxFzAVBgNVBAMM +DjAwMDQubm92YWxvY2FsMQ8wDQYDVQQKDAZjbGllbnQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDcwo5SaoRpzkqy+Y9OADOL7U84h1VFfjb5Uu5raenO +elmHSaCZpVP2EsDUaWavtabHd9fa5Oq6lOyZPDZM6xttfi78EV4RRfEJ4XdvE54W +MZSDAGz4RwxfGOQWBSFyp1NrzT32eqeDSyBrE3jhWx9UUUMwthg5YYjCdBwK+Dwf +hsfS1YeAfXPNO/BGSTe0dPhjLztXe1BkFO5VAwkSXaPs2lBJddOgpTTLXQ3+hIPL +ozkiaTOMOvIMXsCspdhJbSc+jAAGZT5X9Tx7htYbPXIwyDJgeYGmLtr9XxPJ8XGR +rpxkB3zASRcwQzsxTcwkG4E32T53tKsljTkNt15rIoo3AgMBAAGjLzAtMAkGA1Ud +EwQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3 +DQEBCwUAA4IBAQBRtQMvUmiB84RmrGwHCP8hcGUWTz03mtTjGrykNA7YQkA09cRl +RwiqYMWh6zHjdX1Ri3m9eIi/QSK/JX3S9zjZU9dSTtsdnMhkRL08kcxauv9gVXCG +G1Vf+lUVJxTqwuAmcLiDNg9/89sSlxQXFS7Jn9TwTvNiRoFoN5IiJ4LsXyr4uS9Y +S4Ul1aqetwpTV8bjpIbRJbOR8qBFshIZOPdgAT3RqbD/vpGzOvvV0c9g3VFLYoK3 +nQ63w1zhwYxC4MQD9rN7JRAKCDQBLNzf8PW0RSG9pVsf1IjaLxtsmQMgrAati/Ux +AG76LAn9sodtb4GtV8E9ITG0pMNlJyUovstS -----END CERTIFICATE----- diff --git a/etc/certs/client-key.pem b/etc/certs/client-key.pem index c0f1eb143..ea17598ba 100644 --- a/etc/certs/client-key.pem +++ b/etc/certs/client-key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAxxRoYquZ8DIN9dWodPP0lEYw7VGkTpLxsEcjBpGW2zN4SvSw -X400QlV3xPcTSJJzYWY2MTiyIVEtS/TRw6fhOgkuoB0Y3kUBauEOieYYi/2oV408 -eR8OMIOcfngBRGUgnlWLyocI1OK0xjSg0ov7dtlWIayVOpSFnfnkUC4Mf0ErXBFG -5xHQaHdp9EnFoRajeUUG9ZdeOkQ7UjeOOWLTa4MtVpZLvuIO5RB8cd2cyqQdV2tx -dfsmu6cVlm3R5pg7UXSYtyjte5fIWlEWoinfAYhGC9vOY3n+hl1cX1+2asAYYZye -J7lxdISBdZCROVak2CLO1R4WFWdsO27TTC+vvQIDAQABAoIBAGQGPOxWi+HDRIBf -+WPJrvlQywRyILvZ2NVY6KBERieclLQUfQmFSNyLVMIB4g50hsRJNrFEazuSLdAc -EcjccK1YL7UC6ZvD0BKDQWrH0U2FBS/4Joo0sExv1BE2+mwC44CqOrJnZmiP/4QW -rTccXhw41q3UqKXmObxF8hDXEjBdCx1eewqU0i3Ukdyjm/Lrf9wEwCZgneTkSevc -89RC/NYmIEV/XSqgnq0mfhNfeID+RFjXVexqrOspseEfarnSZednEHYLRJHSnk17 -ZjBVzvQ2WcOUfBcUXJgUblSxRHLNw3wad5TT5t2yfW5QhNE69H7JvdOcRAgbsk4q -FkV+HYECgYEA57hvn3YnuMsHvuB9vgjXocmahjFoEbwMJs7fM4BtCQv5vHl5eIZt -OzfFXpe+M4BI+wPHQn4VryyF7ztgSmfxICLoXfnsDQ7AjZMWxBZKH5iS2H8wK9/k -2iq9ePmksr+NaCEQnT3AFbHtsy72+I4NHJLolWrS004RE7Q2v7QzVZ8CgYEA2/Bu -dpvUuM6kqXNpkX7P5wH6ZJEthisbmnuUUGNzC5u4SXcdDZt9dkaBQ7cQJJ9DdT3I -JH19Rx/+1yhqO+ql3UhSE7PRMczwuqcu+WPZyEnRvjP9/DxNVsO7s874RNGePTyV -Djq9b0b+lkr4PBt9u5GeQyNvpgKM34q65zBVJSMCgYAxEZdhly22LhhHzVYTReAT -vJNiU1gMWVvhY/FUAKAWSFjsFnUolp7O6XJ8I3n9ge7yaMxrQjPpUm5SSKqNVxFy -krHOJLxdz3/q+vjZMTclFbQS8GwM/m6B3Ice9Q5xY6rYIBhak9b3QSRqy0k1PS99 -m4ZxDZvzbxaiq4jkc45jVQKBgQC7mejPOPqIrJKdizlIBpAVroVDFOZs5AZGjhSj -QUDXbPsThwt8GN46bcdC2Dpn0oV60rkODxA2A9+e7PU4qFzUVCTWc3ID9Zh8za/u -v7H6+qRyheymI1WgpZJMvETehqJf/3Xwzj/ZVAhCcC4vLw/fV0VUZTyNsO0ynCXy -nzJxWwKBgDSN2d62VQDIZ8zfv8/gMjsPGwTCVfSrof2AQm8PUaiTLY91Hbc3o+Bz -zOMGWE0HY4dzK09e5nh2l1NCuISABcokkuyCmgQnt6Gbne84X/60NhBnVN/0p/cU -G89NAC5oeHS+yZPF8Lw1cwNs/LQiMJrdRz2cVkgKNlgELILjOurx +MIIEowIBAAKCAQEA3MKOUmqEac5KsvmPTgAzi+1POIdVRX42+VLua2npznpZh0mg +maVT9hLA1Glmr7Wmx3fX2uTqupTsmTw2TOsbbX4u/BFeEUXxCeF3bxOeFjGUgwBs ++EcMXxjkFgUhcqdTa8099nqng0sgaxN44VsfVFFDMLYYOWGIwnQcCvg8H4bH0tWH +gH1zzTvwRkk3tHT4Yy87V3tQZBTuVQMJEl2j7NpQSXXToKU0y10N/oSDy6M5Imkz +jDryDF7ArKXYSW0nPowABmU+V/U8e4bWGz1yMMgyYHmBpi7a/V8TyfFxka6cZAd8 +wEkXMEM7MU3MJBuBN9k+d7SrJY05DbdeayKKNwIDAQABAoIBAC6ww3Mw7iKGrAvg +dmuz5TMSFPBKx0E0aaIf5Sc4tmeiPu87Jkl4yyI/YyNJy5scG1MSyMeWJQMjXksm +jgGEtD9bMcrETZXvqgRB+IW4q3XcNKHkZCe6tyYh2JPDsAhU1XL2bMWFuYouSIP9 +EVLwd9bYfRJ/YO4577fY4Nl9GRI9hdOB0Y4dDvxHCprxXC/wH6NpvI5dktTPr2xl +pNqABKdG8XEzP0duIpQf5zXbfDAWRUEpB9MDBXqmKmdjdPnpNS7JtkmCtWogdA9F +LcyFI3e86qB9HHaqq1hBsQEG/DYj0RxCcAQFqTfvpxmZOXDlfWdB7M8xnqkD5xT0 +s6K1TXECgYEA79Lx5FFxfkN/uZKQzV1slJ/GSyfJqKhRh38/8G1ncmSG5dh0QMht +Tt7FbFhYwGZQY9iMq1g/ujlHAzdKbFHGRX0z30xP7kf0R/L0W2yHMq59Ys4nUhGY +o1v2sGxgDDP9XPNm/MV8DCZcoLMxvvFrfWLMYcvWTJb8TBGQgqpcEF8CgYEA66Zu +d+l2W5LSTgwYeIAQuiIhhNLY9Ct94TWrum5QZMdeR+IUYn+dT817Qbmf4KiiihfJ +V8t3tYgBBamNpqMKpm7An+HnFgRoV3o8W0pjlKdaQ0EiwhTQsLJcmZ1JV/k9Dd4V +Rl26M0DZRKTHIUWLt7nNYexydQpfWlfRX1/n9SkCgYAKphUzjCI79wdO2CEx3Tob +B1UotSWRJZgpKg9Ov6zeOXR79DaFQeEIpX+ipfGa6XAcXtswKIT74dszW1skoCTr +pPmOqrbJ38wK/dC31oPSTkkm//xi+oEKj+TORKGnKQ/Q9sXV53bwmyt1vz8wOUwK +jz6AASsMz494WTdPdf0MhQKBgQDGoBos6JPiy/aH4podt5Rhz7MBCdfkt2P7GAoP +sjwBNiq53E3iWD54rXJfC98+teWLEFGdttrIIEL8StYixvqLHn8uRHNLk5t/YIDP +UfxtqEHkvlpVzMW6qhxzPqg7htF3huHX1djEqrx3p4xQ9xW1Xt9G0s4G6R9GPw8z +nNsfQQKBgF1nvj5xhD7fiVzS7NrjtBslDxKGQCfs9f1Xl2eadGp6pgwG/hvw5oO7 +gtoYJuPq+Zu92a+UDQVErXMHiXn3iza/3EOf2BP9zbq9mBGZtKmLExP0QGEmDygb +Yo18YdfwWwqxvEf+jt2URv0w+KNWL/3j5rDmngNa1iNubX3p1AK6 -----END RSA PRIVATE KEY----- diff --git a/etc/certs/key.pem b/etc/certs/key.pem index 18ff0e5c7..4c80ac6c6 100644 --- a/etc/certs/key.pem +++ b/etc/certs/key.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/test/emqx_logger_formatter_SUITE.erl b/test/emqx_logger_formatter_SUITE.erl deleted file mode 100644 index a135c7bc9..000000000 --- a/test/emqx_logger_formatter_SUITE.erl +++ /dev/null @@ -1,653 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2018. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(emqx_logger_formatter_SUITE). - --compile(export_all). - --include_lib("eunit/include/eunit.hrl"). --include_lib("common_test/include/ct.hrl"). --include_lib("kernel/include/logger.hrl"). - --define(TRY(X), my_try(fun() -> X end)). - -suite() -> - [{timetrap,{seconds,30}}]. - -init_per_suite(Config) -> - Config. - -end_per_suite(_Config) -> - ok. - -init_per_group(_Group, Config) -> - Config. - -end_per_group(_Group, _Config) -> - ok. - -init_per_testcase(_TestCase, Config) -> - Config. - -end_per_testcase(Case, Config) -> - try apply(?MODULE,Case,[cleanup,Config]) - catch error:undef -> ok - end, - ok. - -groups() -> - []. - -all() -> - [default, - single_line, - template, - format_msg, - report_cb, - max_size, - depth, - chars_limit, - format_mfa, - level_or_msg_in_meta, - faulty_log, - faulty_config, - faulty_msg, - check_config, - update_config]. - -default(_Config) -> - String1 = format(info,{"~p",[term]},#{},#{}), - ct:log(String1), - ?assertMatch([_Date, _Time,"info:","term\n"], string:lexemes(String1," ")), - - Time = timestamp(), - ExpectedTimestamp = default_time_format(Time), - String2 = format(info,{"~p",[term]},#{time=>Time},#{}), - ct:log("ExpectedTimestamp: ~p, got: ~p", [ExpectedTimestamp, String2]), - " info: term\n" = string:prefix(String2,ExpectedTimestamp), - ok. - -single_line(_Config) -> - Time = timestamp(), - ExpectedTimestamp = default_time_format(Time), - String1 = format(info,{"~p",[term]},#{time=>Time},#{}), - ct:log(String1), - ?assertMatch(" info: term\n", string:prefix(String1,ExpectedTimestamp)), - - String2 = format(info,{"a:~n~p",[term]},#{time=>Time},#{}), - ct:log(String2), - ?assertMatch(" info: a:\nterm\n", string:prefix(String2,ExpectedTimestamp)), - - - Prefix = - "Some characters to fill the line ------------------------------------- ", - %% There would actually be newlines inside the - %% list and map. - String4 = format(info,{"~s~p~n~s~p~n",[Prefix, - lists:seq(1,10), - Prefix, - #{a=>map,with=>a,few=>accociations}]}, - #{time=>Time}, - #{}), - ct:log(String4), - match = re:run(String4,"\\[1,2,3,\n",[global,{capture,none}]), - {match,Match4} = re:run(String4,"=>\n",[global,{capture,all}]), - 3 = length(Match4), - - %% Test that big metadata fields do not get line breaks - String5 = format(info,"", - #{mymeta=>lists:seq(1,100)}, - #{template=>[mymeta,"\n"]}), - ct:log(String5), - [_] = string:lexemes(String5,"\n"), - ok. - -template(_Config) -> - Time = timestamp(), - - Template1 = [msg], - String1 = format(info,{"~p",[term]},#{time=>Time},#{template=>Template1}), - ct:log(String1), - "term" = String1, - - Template2 = [msg,unknown], - String2 = format(info,{"~p",[term]},#{time=>Time},#{template=>Template2}), - ct:log(String2), - "term" = String2, - - Template3 = ["string"], - String3 = format(info,{"~p",[term]},#{time=>Time},#{template=>Template3}), - ct:log(String3), - "string" = String3, - - Template4 = ["string\nnewline"], - String4 = format(info,{"~p",[term]},#{time=>Time},#{template=>Template4}), - ct:log(String4), - "string\nnewline" = String4, - - Template5 = [], - String5 = format(info,{"~p",[term]},#{time=>Time},#{template=>Template5}), - ct:log(String5), - "" = String5, - - Ref6 = erlang:make_ref(), - Meta6 = #{atom=>some_atom, - integer=>632, - list=>[list,"string",4321,#{},{tuple}], - mfa=>{mod,func,0}, - pid=>self(), - ref=>Ref6, - string=>"some string", - time=>Time, - tuple=>{1,atom,"list"}, - nested=>#{subkey=>subvalue}}, - Template6 = lists:join(";",lists:sort(maps:keys(maps:remove(nested,Meta6))) ++ - [[nested,subkey]]), - String6 = format(info,{"~p",[term]},Meta6,#{template=>Template6}), - ct:log(String6), - SelfStr = pid_to_list(self()), - RefStr6 = ref_to_list(Ref6), - ListStr = "[list,\"string\",4321,#{},{tuple}]", - ExpectedTime6 = default_time_format(Time), - ["some_atom", - "632", - ListStr, - "mod:func/0", - SelfStr, - RefStr6, - "some string", - ExpectedTime6, - "{1,atom,\"list\"}", - "subvalue"] = string:lexemes(String6,";"), - - Meta7 = #{time=>Time, - nested=>#{key1=>#{subkey1=>value1}, - key2=>value2}}, - Template7 = lists:join(";",[nested, - [nested,key1], - [nested,key1,subkey1], - [nested,key2], - [nested,key2,subkey2], - [nested,key3], - [nested,key3,subkey3]]), - String7 = format(info,{"~p",[term]},Meta7,#{template=>Template7}), - ct:log(String7), - [MultipleKeysStr7, - "#{subkey1 => value1}", - "value1", - "value2", - "", - "", - ""] = string:split(String7,";",all), - %% Order of keys is not fixed - case MultipleKeysStr7 of - "#{key2 => value2,key1 => #{subkey1 => value1}}" -> ok; - "#{key1 => #{subkey1 => value1},key2 => value2}" -> ok; - _ -> ct:fail({full_nested_map_unexpected,MultipleKeysStr7}) - end, - - Meta8 = #{time=>Time, - nested=>#{key1=>#{subkey1=>value1}, - key2=>value2}}, - Template8 = - lists:join( - ";", - [{nested,["exist:",nested],["noexist"]}, - {[nested,key1],["exist:",[nested,key1]],["noexist"]}, - {[nested,key1,subkey1],["exist:",[nested,key1,subkey1]],["noexist"]}, - {[nested,key2],["exist:",[nested,key2]],["noexist"]}, - {[nested,key2,subkey2],["exist:",[nested,key2,subkey2]],["noexist"]}, - {[nested,key3],["exist:",[nested,key3]],["noexist"]}, - {[nested,key3,subkey3],["exist:",[nested,key3,subkey3]],["noexist"]}]), - String8 = format(info,{"~p",[term]},Meta8,#{template=>Template8}), - ct:log(String8), - [MultipleKeysStr8, - "exist:#{subkey1 => value1}", - "exist:value1", - "exist:value2", - "noexist", - "noexist", - "noexist"] = string:split(String8,";",all), - %% Order of keys is not fixed - case MultipleKeysStr8 of - "exist:#{key2 => value2,key1 => #{subkey1 => value1}}" -> ok; - "exist:#{key1 => #{subkey1 => value1},key2 => value2}" -> ok; - _ -> ct:fail({full_nested_map_unexpected,MultipleKeysStr8}) - end, - - ok. - -format_msg(_Config) -> - Template = [msg], - - String1 = format(info,{"~p",[term]},#{},#{template=>Template}), - ct:log(String1), - "term" = String1, - - String2 = format(info,{"list",[term]},#{},#{template=>Template}), - ct:log(String2), - "FORMAT ERROR: \"list\" - [term]" = String2, - - String3 = format(info,{report,term},#{},#{template=>Template}), - ct:log(String3), - "term" = String3, - - String4 = format(info,{report,term}, - #{report_cb=>fun(_)-> {"formatted",[]} end}, - #{template=>Template}), - ct:log(String4), - "formatted" = String4, - - String5 = format(info,{report,term}, - #{report_cb=>fun(_)-> faulty_return end}, - #{template=>Template}), - ct:log(String5), - "REPORT_CB/1 ERROR: term; Returned: faulty_return" = String5, - - String6 = format(info,{report,term}, - #{report_cb=>fun(_)-> erlang:error(fun_crashed) end}, - #{template=>Template}), - ct:log(String6), - "REPORT_CB/1 CRASH: term; Reason: {error,fun_crashed,"++_ = String6, - - String7 = format(info,{report,term}, - #{report_cb=>fun(_,_)-> ['not',a,string] end}, - #{template=>Template}), - ct:log(String7), - "REPORT_CB/2 ERROR: term; Returned: ['not',a,string]" = String7, - - String8 = format(info,{report,term}, - #{report_cb=>fun(_,_)-> faulty_return end}, - #{template=>Template}), - ct:log(String8), - "REPORT_CB/2 ERROR: term; Returned: faulty_return" = String8, - - String9 = format(info,{report,term}, - #{report_cb=>fun(_,_)-> erlang:error(fun_crashed) end}, - #{template=>Template}), - ct:log(String9), - "REPORT_CB/2 CRASH: term; Reason: {error,fun_crashed,"++_ = String9, - - %% strings are not formatted - String10 = format(info,{string,"string"}, - #{report_cb=>fun(_)-> {"formatted",[]} end}, - #{template=>Template}), - ct:log(String10), - "string" = String10, - - String11 = format(info,{string,['not',printable,list]}, - #{report_cb=>fun(_)-> {"formatted",[]} end}, - #{template=>Template}), - ct:log("~ts",[String11]), % avoiding ct_log crash - "FORMAT ERROR: \"~ts\" - [['not',printable,list]]" = String11, - - String12 = format(info,{string,"string"},#{},#{template=>Template}), - ct:log(String12), - "string" = String12, - - ok. - -report_cb(_Config) -> - Template = [msg], - MetaFun = fun(_) -> {"meta_rcb",[]} end, - ConfigFun = fun(_) -> {"config_rcb",[]} end, - "term" = format(info,{report,term},#{},#{template=>Template}), - "meta_rcb" = - format(info,{report,term},#{report_cb=>MetaFun},#{template=>Template}), - "config_rcb" = - format(info,{report,term},#{},#{template=>Template, - report_cb=>ConfigFun}), - "config_rcb" = - format(info,{report,term},#{report_cb=>MetaFun},#{template=>Template, - report_cb=>ConfigFun}), - ok. - -max_size(_Config) -> - Cfg = #{template=>[msg]}, - "12345678901234567890" = format(info,{"12345678901234567890",[]},#{},Cfg), - %% application:set_env(kernel,logger_max_size,11), - %% "12345678901234567890" = % min value is 50, so this is not limited - %% format(info,{"12345678901234567890",[]},#{},Cfg), - %% "12345678901234567890123456789012345678901234567..." = % 50 - %% format(info, - %% {"123456789012345678901234567890123456789012345678901234567890", - %% []}, - %% #{}, - %% Cfg), - %% application:set_env(kernel,logger_max_size,53), - %% "12345678901234567890123456789012345678901234567890..." = %53 - %% format(info, - %% {"123456789012345678901234567890123456789012345678901234567890", - %% []}, - %% #{}, - %% Cfg), - "123456789012..." = - format(info,{"12345678901234567890",[]},#{},Cfg#{max_size=>15}), - "12345678901234567890" = - format(info,{"12345678901234567890",[]},#{},Cfg#{max_size=>unlimited}), - %% Check that one newline at the end of the line is kept (if it exists) - "12345678901...\n" = - format(info,{"12345678901234567890\n",[]},#{},Cfg#{max_size=>15}), - "12345678901...\n" = - format(info,{"12345678901234567890",[]},#{},Cfg#{template=>[msg,"\n"], - max_size=>15}), - ok. -max_size(cleanup,_Config) -> - application:unset_env(kernel,logger_max_size), - ok. - -depth(_Config) -> - Template = [msg], - "[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]" = - format(info, - {"~p",[[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]]}, - #{}, - #{template=>Template}), - application:set_env(kernel,error_logger_format_depth,11), - "[1,2,3,4,5,6,7,8,9,0|...]" = - format(info, - {"~p",[[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]]}, - #{}, - #{template=>Template}), - "[1,2,3,4,5,6,7,8,9,0,1,2|...]" = - format(info, - {"~p",[[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]]}, - #{}, - #{template=>Template, - depth=>13}), - "[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]" = - format(info, - {"~p",[[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]]}, - #{}, - #{template=>Template, - depth=>unlimited}), - ok. -depth(cleanup,_Config) -> - application:unset_env(kernel,error_logger_format_depth), - ok. - -chars_limit(_Config) -> - FA = {"LoL: ~p~nL: ~p~nMap: ~p~n", - [lists:duplicate(10,lists:seq(1,100)), - lists:seq(1,100), - maps:from_list(lists:zip(lists:seq(1,100), - lists:duplicate(100,value)))]}, - Meta = #{time=>timestamp()}, - Template = [time," - ", msg, "\n"], - FC = #{template=>Template, - depth=>unlimited, - max_size=>unlimited, - chars_limit=>unlimited}, - CL1 = 80, - String1 = format(info,FA,Meta,FC#{chars_limit=>CL1}), - L1 = string:length(String1), - ct:log("String1: ~p~nLength1: ~p~n",[lists:flatten(String1),L1]), - true = L1 > CL1, - true = L1 < CL1 + 15, - - String2 = format(info,FA,Meta,FC#{chars_limit=>CL1,depth=>10}), - L2 = string:length(String2), - ct:log("String2: ~p~nLength2: ~p~n",[lists:flatten(String2),L2]), - String2 = String1, - - CL3 = 200, - String3 = format(info,FA,Meta,FC#{chars_limit=>CL3}), - L3 = string:length(String3), - ct:log("String3: ~p~nLength3: ~p~n",[lists:flatten(String3),L3]), - true = L3 > CL3, - true = L3 < CL3 + 15, - - String4 = format(info,FA,Meta,FC#{chars_limit=>CL3,depth=>10}), - L4 = string:length(String4), - ct:log("String4: ~p~nLength4: ~p~n",[lists:flatten(String4),L4]), - true = L4 > CL3, - true = L4 < CL3 + 15, - - %% Test that max_size truncates the string which is limited by - %% depth and chars_limit - MS5 = 150, - String5 = format(info,FA,Meta,FC#{chars_limit=>CL3,depth=>10,max_size=>MS5}), - L5 = string:length(String5), - ct:log("String5: ~p~nLength5: ~p~n",[String5,L5]), - L5 = MS5, - true = lists:prefix(lists:sublist(String5,L5-4),String4), - - %% Test that chars_limit limits string also - Str = "123456789012345678901234567890123456789012345678901234567890123456789", - CL6 = 80, - String6 = format(info,{string,Str},Meta,FC#{chars_limit=>CL6}), - L6 = string:length(String6), - ct:log("String6: ~p~nLength6: ~p~n",[String6,L6]), - L6 = CL6, - - ok. - -format_mfa(_Config) -> - Template = [mfa], - - Meta1 = #{mfa=>{mod,func,0}}, - String1 = format(info,{"~p",[term]},Meta1,#{template=>Template}), - ct:log(String1), - "mod:func/0" = String1, - - Meta2 = #{mfa=>{mod,func,[]}}, - String2 = format(info,{"~p",[term]},Meta2,#{template=>Template}), - ct:log(String2), - "mod:func/0" = String2, - - Meta3 = #{mfa=>"mod:func/0"}, - String3 = format(info,{"~p",[term]},Meta3,#{template=>Template}), - ct:log(String3), - "mod:func/0" = String3, - - Meta4 = #{mfa=>othermfa}, - String4 = format(info,{"~p",[term]},Meta4,#{template=>Template}), - ct:log(String4), - "othermfa" = String4, - - ok. - -level_or_msg_in_meta(_Config) -> - %% The template contains atoms to pick out values from meta, - %% or level/msg to add these from the log event. What if you have - %% a key named 'level' or 'msg' in meta and want to display - %% its value? - %% For now we simply ignore Meta on this and display the - %% actual level and msg from the log event. - - Meta = #{level=>mylevel, - msg=>"metamsg"}, - Template = [level,";",msg], - String = format(info,{"~p",[term]},Meta,#{template=>Template}), - ct:log(String), - "info;term" = String, % so mylevel and "metamsg" are ignored - ok. - -faulty_log(_Config) -> - %% Unexpected log (should be type logger:log_event()) - print error - {error, - function_clause, - {emqx_logger_formatter,format,[_,_],_}} = - ?TRY(emqx_logger_formatter:format(unexp_log,#{})), - ok. - -faulty_config(_Config) -> - {error, - function_clause, - {emqx_logger_formatter,format,[_,_],_}} = - ?TRY(emqx_logger_formatter:format(#{level=>info, - msg=>{"~p",[term]}, - meta=>#{time=>timestamp()}}, - unexp_config)), - ok. - -faulty_msg(_Config) -> - {error, - function_clause, - {emqx_logger_formatter,_,_,_}} = - ?TRY(emqx_logger_formatter:format(#{level=>info, - msg=>term, - meta=>#{time=>timestamp()}}, - #{})), - ok. - --define(cfgerr(X), {error,{invalid_formatter_config,emqx_logger_formatter,X}}). -check_config(_Config) -> - ok = emqx_logger_formatter:check_config(#{}), - ?cfgerr(bad) = emqx_logger_formatter:check_config(bad), - - C1 = #{chars_limit => 1, - depth => 1, - max_size => 1, - report_cb => fun(R) -> {"~p",[R]} end, - template => []}, - ok = emqx_logger_formatter:check_config(C1), - - ok = emqx_logger_formatter:check_config(#{chars_limit => unlimited}), - ?cfgerr({chars_limit,bad}) = - emqx_logger_formatter:check_config(#{chars_limit => bad}), - - ok = emqx_logger_formatter:check_config(#{depth => unlimited}), - ?cfgerr({depth,bad}) = - emqx_logger_formatter:check_config(#{depth => bad}), - - ok = emqx_logger_formatter:check_config(#{max_size => unlimited}), - ?cfgerr({max_size,bad}) = - emqx_logger_formatter:check_config(#{max_size => bad}), - - ok = - emqx_logger_formatter:check_config(#{report_cb => fun(_,_) -> "" end}), - ?cfgerr({report_cb,F}) = - emqx_logger_formatter:check_config(#{report_cb => F=fun(_,_,_) -> {"",[]} end}), - ?cfgerr({report_cb,bad}) = - emqx_logger_formatter:check_config(#{report_cb => bad}), - - Ts = [[key], - [[key1,key2]], - [{key,[key],[]}], - [{[key1,key2],[[key1,key2]],["noexist"]}], - ["string"]], - [begin - ct:log("check template: ~p",[T]), - ok = emqx_logger_formatter:check_config(#{template => T}) - end - || T <- Ts], - - ETs = [bad, - [{key,bad}], - [{key,[key],bad}], - [{key,[key],"bad"}], - "bad", - [[key,$a,$b,$c]], - [[$a,$b,$c,key]]], - [begin - ct:log("check template: ~p",[T]), - {error,{invalid_formatter_template,emqx_logger_formatter,T}} = - emqx_logger_formatter:check_config(#{template => T}) - end - || T <- ETs], - ok. - -%% Test that formatter config can be changed, and that the default -%% template is updated accordingly -update_config(_Config) -> - {error,{not_found,?MODULE}} = logger:update_formatter_config(?MODULE,#{}), - - logger:add_handler_filter(default,silence,{fun(_,_) -> stop end,ok}), - ok = logger:add_handler(?MODULE,?MODULE,#{formatter => {emqx_logger_formatter, #{chars_limit => unlimited}}, - config => #{type => standard_io}}), - D = lists:seq(1,1000), - logger:notice("~p~n",[D]), - {Lines1,C1} = check_log(), - ct:log("lines1: ~p", [Lines1]), - ct:log("c1: ~p",[C1]), - [Line1 | _] = Lines1, - [_Date, WithOutDate1] = string:split(Line1," "), - [_, "notice: "++D1] = string:split(WithOutDate1," "), - ?assert(length(D1)<1000), - ?assertMatch(#{chars_limit := unlimited}, C1), - - error_logger:error_msg("~p",[D]), - {Lines5,C5} = check_log(), - ct:log("Lines5: ~p", [Lines5]), - ct:log("c5: ~p",[C5]), - [Line5 | _] = Lines5, - [_Date, WithOutDate5] = string:split(Line5," "), - [_, "error: "++_D5] = string:split(WithOutDate5," "), - - ?assertMatch({error,{invalid_formatter_config,bad}}, - logger:update_formatter_config(?MODULE,bad)), - ?assertMatch({error,{invalid_formatter_config,emqx_logger_formatter,{depth,bad}}}, - logger:update_formatter_config(?MODULE,depth,bad)), - - ok. - -update_config(cleanup,_Config) -> - _ = logger:remove_handler(?MODULE), - _ = logger:remove_handler_filter(default,silence), - ok. - -%%%----------------------------------------------------------------- -%%% Internal -format(Level,Msg,Meta,Config) -> - format(#{level=>Level,msg=>Msg,meta=>add_time(Meta)},Config). - -format(Log,Config) -> - lists:flatten(emqx_logger_formatter:format(Log,Config)). - -default_time_format(SysTime) when is_integer(SysTime) -> - Ms = SysTime rem 1000000 div 1000, - {Date, _Time = {H, Mi, S}} = calendar:system_time_to_local_time(SysTime, microsecond), - default_time_format({Date, {H, Mi, S, Ms}}); -default_time_format({{Y, M, D}, {H, Mi, S, Ms}}) -> - io_lib:format("~b-~2..0b-~2..0b ~2..0b:~2..0b:~2..0b.~3..0b", [Y, M, D, H, Mi, S, Ms]); -default_time_format({{Y, M, D}, {H, Mi, S}}) -> - io_lib:format("~b-~2..0b-~2..0b ~2..0b:~2..0b:~2..0b", [Y, M, D, H, Mi, S]). - -integer(Str) -> - is_integer(list_to_integer(Str)). -integer(Str,Max) -> - integer(Str,0,Max). -integer(Str,Min,Max) -> - Int = list_to_integer(Str), - Int >= Min andalso Int = - try Fun() catch C:R:S -> {C,R,hd(S)} end. - -timestamp() -> - erlang:system_time(microsecond). - -%% necessary? -add_time(#{time:=_}=Meta) -> - Meta; -add_time(Meta) -> - Meta#{time=>timestamp()}. - -%%%----------------------------------------------------------------- -%%% handler callback -log(Log,#{formatter:={M,C}}) -> - put(log,{M:format(Log,C),C}), - ok. - -check_log() -> - {S,C} = erase(log), - {string:lexemes(S,"\n"),C}.