logstash-integration-logstash 0.0.5-java → 1.0.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/VERSION +1 -1
  4. data/docs/index.asciidoc +8 -5
  5. data/docs/output-logstash.asciidoc +6 -6
  6. data/lib/logstash/outputs/logstash.rb +254 -127
  7. data/lib/logstash/utils/load_balancer.rb +81 -0
  8. data/logstash-integration-logstash.gemspec +2 -1
  9. data/spec/fixtures/certs/generated/client_from_root.jks +0 -0
  10. data/spec/fixtures/certs/generated/client_from_root.key.pem +50 -50
  11. data/spec/fixtures/certs/generated/client_from_root.key.pkcs8.pem +52 -52
  12. data/spec/fixtures/certs/generated/client_from_root.p12 +0 -0
  13. data/spec/fixtures/certs/generated/client_from_root.pem +28 -28
  14. data/spec/fixtures/certs/generated/client_from_untrusted.jks +0 -0
  15. data/spec/fixtures/certs/generated/client_from_untrusted.key.pem +50 -50
  16. data/spec/fixtures/certs/generated/client_from_untrusted.key.pkcs8.pem +52 -52
  17. data/spec/fixtures/certs/generated/client_from_untrusted.p12 +0 -0
  18. data/spec/fixtures/certs/generated/client_from_untrusted.pem +28 -28
  19. data/spec/fixtures/certs/generated/client_self_signed.jks +0 -0
  20. data/spec/fixtures/certs/generated/client_self_signed.key.pem +50 -50
  21. data/spec/fixtures/certs/generated/client_self_signed.key.pkcs8.pem +52 -52
  22. data/spec/fixtures/certs/generated/client_self_signed.p12 +0 -0
  23. data/spec/fixtures/certs/generated/client_self_signed.pem +28 -28
  24. data/spec/fixtures/certs/generated/root.key.pem +50 -50
  25. data/spec/fixtures/certs/generated/root.pem +28 -28
  26. data/spec/fixtures/certs/generated/server_from_root-key-pkcs8.pem +50 -50
  27. data/spec/fixtures/certs/generated/server_from_root.jks +0 -0
  28. data/spec/fixtures/certs/generated/server_from_root.key.pem +50 -50
  29. data/spec/fixtures/certs/generated/server_from_root.key.pkcs8.pem +52 -52
  30. data/spec/fixtures/certs/generated/server_from_root.p12 +0 -0
  31. data/spec/fixtures/certs/generated/server_from_root.pem +28 -28
  32. data/spec/fixtures/certs/generated/untrusted.key.pem +50 -50
  33. data/spec/fixtures/certs/generated/untrusted.pem +28 -28
  34. data/spec/unit/full_transmission_spec.rb +10 -2
  35. data/spec/unit/load_balancer_spec.rb +67 -0
  36. data/spec/unit/logstash_output_spec.rb +179 -17
  37. metadata +22 -5
@@ -1,52 +1,52 @@
1
1
  -----BEGIN PRIVATE KEY-----
2
- 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
- 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
- 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
- DuXZgmUITzxPtXx4keudp2K8bz2T04K27OSCfWT6EfnS5BZk2OCMgRk4jiYa4lES
6
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- kV20WVyPiogngSNyqy8EeebmYL5KqrgTWqaAlXwzC80+tc0wbNLQgI1zBtRRJba3
26
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- ao2rb6mZiXJl1z22zYPoFzHa+m5Kxd3XvE8o/eB21YErqYtNvuDZm51K6lZIuPwR
35
- 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
- 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
- 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
- RnCwFhlFt4ROx9OzAqBeY83Rx0gQeZ2aopXLpwWcKxRSCHfvmWMrUUyB2Cb2zR1L
39
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
51
- 9ZfI3LWNo63/Kz11Ssrd5OaDRbR4CyY=
2
+ MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCiSZ/pFd63TQgk
3
+ t4uC3ibpA2BKFEyuCPfKn69rrGJrXw4K6eXxSItD5MjO9aEdETRFwA1hNKyDf6nF
4
+ HZjPlORa79APACNWQIkW2EJjCX9Dg2chYrMmYx3puBrkDB6YWW583kEFjxXkwIPX
5
+ t2UG2AudwAAEOzScGBdKrQnGFHiI/L7YZBsoNwgXrZPz5V1v401x5CU62t8NlQhd
6
+ E+jvyZLdDwNrSvGeJCoi8hjwE2YzX1tvH+g9g/JdovSd5QEW6LA4LyN5FxKjHqCo
7
+ YEdXfJq/d5ximqPIGSERiRb7rmM55t6prdYzeqgP5TtGmPjdE2hCTfjqhZssgXk3
8
+ fxLNlSGKBj9bLa9dlBWxyax2RJ13UB5a4iz/upsP8kIZX9mx+aoTzc+D5uveLjXh
9
+ qTVBjCs/HHXKQpVxFHvWjeAXiBvlT5O9pOB+pHFyLsYW11ZICUQCAwy8E++ePN2A
10
+ EPzokdeuDJQv8GcqoKeK6AQrP51FXvBf9UYAIEphxTpWDadDbLutnq7Zj3PnlI6M
11
+ SNfpZyr8FafEdTSM0IbkRIVoB3bpbVB7wxMq21ScE70+ax8lR0mliqLfy1uTIijX
12
+ VxO9kE6X3Z/IIVRTFR0ziAylAhOOZMmbL9JI5FZa+tuk7wo6dx6ltkFY1B8FzXLa
13
+ CdCdp+xQjLH6YI0zsAjP4zfBmPPm2wIDAQABAoICAAH/i4zvlocTQxurk4U8JpkG
14
+ oPwL5FyM2j6JS8LP2dSyTXSy1xtxqW9tNOQwvJf1IrGHfA56xT1v/7YWQYW9pUWH
15
+ sH+CJ3P4NwjAWBX4F8GxDftlJgk9s9IPoaHDhUfd5I9uucY7U72vNjO+L9DlIBwf
16
+ PsXcCdEpysZdCPi4dNvoauLWXcNyeS2PxjYsDkquZPcyPuWiaVSuvsXvCrhCYusS
17
+ 8RegDoC2t5kM3yB4/lxQoA2xYnY/cXS823JrT6T3GBRfweW+HHWwPgMD5AwlaDQQ
18
+ YWMX8+5qLJXaDrH3sP1LNZj4aYNpLVMarLp8iqZv5UN65T8yNYchf02lu/VTOWNR
19
+ fAoLGXpClOj17tEwn+/HzwCZFt7zCbDlErcI6kzwo2CG1a/J8/EygYEc7FBAijQK
20
+ zSKLSsRV6qvo9kCJA07l46i+0/1nmKyBvouYOtF/Oc5PsyfJJy6rIOTbaKGWqmCQ
21
+ tUxCMagMaWhVxPF9u6jdlZSRz5Bwrzzmf/atGM9IiJcxTWwvYViLnwu4cs1MM5YF
22
+ c4u//NKRYAOJ40UykeAd7j4CjOQrvkIL8f7maM60C9bor21DisMI5QWr2KtFK8Bd
23
+ QmE0RImZ5MEL5Ol6ZFpZ/ncbV2e9vUCtorfE7TswcKBR65dY0+omCaD9v/+0tDHw
24
+ rUZb4fjCeBLJD0Q75glBAoIBAQC5kButIvqQEsceCQANu2h0GU7LcmHPuFWDWG4+
25
+ snDWfA9HiMnoo3SyAWSj5S3062MpVmS/EUWXEcSmsnY2iTdhJyyw9y33xEDZgm0h
26
+ oObZYS5fIMNJHcMGrKIbp37ejbzu1xN+Mhde4Om/nHVe3QLGYV1n+Nbf6fSg0flk
27
+ 2SH9Hbs1OGPwUKLYZjUdPaqEpJXteJvhcJKytp3Nu/XFEW8EqifVJvyqdKyIoJWM
28
+ x9WQIdzRkTVU96nAvKtK+9LXnpX9kvRYw8HGVwZxRRqVveUbq+4KENbBcHt93HsY
29
+ Ahng6eLjQ+EKgtDzvYBeD12i0LjCnn47p9KgIpKPFCStkifzAoIBAQDf48KMDez7
30
+ UzU9TskCOvVcPSdxZVDW2Kog08tfPmAyX6wySffjDT1t/YJC+TZzaBTeYPToFZ6d
31
+ 2sN55PT4dcnNje0Q/4xypViBYNNOjm2yJO1X/Ew/KJqyFrDHtmhA9TskBt9t3BHM
32
+ onXfd6PuWD9lbJk4K6dnFR7ZZbfStghuhYW/bLQ2/xe/KL/r4znKiOZUKwmI9u1l
33
+ uiVEmx5BwWUZF0kxMXHp18EHDszORWSd1l3UHKswuMihL/uvHb2XAKsQROH4kT5i
34
+ /53SkXlpndLzooDT8cH8ckv4rhqofyyc4G7ud+PI+ebBqxsWPEetlGA2QVctRfOo
35
+ C9geZDANUyd5AoIBAQCc9bujYOIGugt5aW2FMA+znLCcwFziAm860bM3D2MI2hlm
36
+ jdsUECcmZq1FQRb1g6H2FmDTiX2OwnXP90as7LZOVH+mFP7qBDRCh+NdvadnGp/J
37
+ 0YG+OBF+dMoOkEhtYgD9Giof5akFFURDUsmo+1NckIEc8Ex5TIEjA1lsJ4prexme
38
+ c9t9LAgC+blVyZKR7lHvc8SPFdTQnE2w95t1HUEF9hQJZZf1awmB7Ctz0Jjh+PK6
39
+ xZQSEgehwzU1EPuQbVE8E3DiIHupFHWbnDNXlC/Wj0CjfQjayRV8KeJpNWXEbLIB
40
+ QKp7ZJnwgkuxxFeU3+5YmQ330gYEdBn6MrSvqOBnAoIBAEK6sohluiUqJqsQKU71
41
+ 3Z1RSMk+ZjqytvozxeCsSaWZ6EvQygYtMwruTP3DI1yAQAALq9LkZrMrualB+VV4
42
+ Xd5bF7ZCRE0DRP7Cqhg20TEQWoEn3F3Sr1C2/Jd5oVcDAE57keo/djqkjTc+hGiM
43
+ etCy7nPUZv+NRvWKoKA3ywmN2FA2iPv/Scea0KDwx4+6/9NERIJC/nycX3E0Pm9g
44
+ wc4Zp6H217nXqVt+KMKt4hA9DRgkN029NWb9UyldVt2DwHiH30XjnFGLWDGjVCmL
45
+ dY1R+M2yt5uTQVtsINvpk5VqOwXuS8Dh4soEQn19F+v/VjG1hdMjjzyd0xszxzKh
46
+ fxkCggEAatYJHvNbxFR7HWTfKxFLBSsdoik7wpYSEKfzpp/DF9cevBzKp1Cw0qTT
47
+ eePWfUchwcYowczFyxaCCL3GjM908UOGff2xrpksgRal34mUsZ5+hIhftiG8Elw3
48
+ 0CEzZhMpXdacOnrbuvqHTSL1gl4rbIZ9viFh4IJ28z9QNwR0uefKm+6IPX+OBnlB
49
+ P59uMLu97J+4jiiCgpHMiZgjcOujnKQvUsPdqBvNNaEyCfIoryM2zlK/DX6JW1Fy
50
+ VeQyqBlQ4uLPZPMueLpGv5E0qMBkgkRNO55yNpOE0GJKysL5IOekNNI3Fb0LUwxU
51
+ bE2Gq2KKglvm8jQbnUPn8YC7swA0lg==
52
52
  -----END PRIVATE KEY-----
@@ -1,54 +1,54 @@
1
1
  -----BEGIN ENCRYPTED PRIVATE KEY-----
2
- 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
- MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBCtHuOKFIJWSFNpZR0CyZz6BIIJ
4
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- SmlfXvzYoHGe/TLG+Nf5uNxF7595A4m+NV4T2vpJl1iItUp+46gVpzLPV6M7j62B
13
- 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
- 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
- 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
- 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
- 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
- 5U4S8K9AOoynwP1fAgi5KSuZZ4ePv/qwIs/9PKNsr5TELKqQNMIct0CY92fDwXN1
19
- ORbLH4E8piNVVLZk4qQBG9voNCJsgobQFNyTVZ306GTnrabcltp8kVaBRCNMuSK+
20
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- u4+01bxZTZaAXreghfqxNNlPw135JGcoLNfD03x3l/iCFziOYgSCXO8QNbKWInkJ
41
- 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
- 7LxrXRASihuLEISJ8PVeNx1gU6W+uTGjux1S+A8Z0Mqv9u5k2FCInjZsdWzZpJCa
43
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- TAGF7oaSRKRHXZgb8JvKcMS8on7TmnLCQwzX6FY6pCnOCixgOsOwciCqo6mb8Nqt
53
- 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
54
54
  -----END ENCRYPTED PRIVATE KEY-----
@@ -1,37 +1,37 @@
1
1
  -----BEGIN CERTIFICATE-----
2
2
  MIIGaTCCBFGgAwIBAgIBAzANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJMUzEL
3
3
  MAkGA1UECAwCTkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0
4
- YXNoMQ0wCwYDVQQDDARyb290MB4XDTIzMTAwMzE2NDcxNFoXDTI2MTAwMzE2NDcx
4
+ YXNoMQ0wCwYDVQQDDARyb290MB4XDTIzMTExNjAxMTExNFoXDTI2MTExNjAxMTEx
5
5
  NFowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
6
6
  cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEPMA0GA1UEAwwGc2VydmVyMIICIjANBgkq
7
- hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1u+2yUHfQihcQD744xKiPbNjEve3iXIC
8
- vq6sSvmaZ50Emha/ydjDKC4F1zBL7sA+b8/sHz5PNVWk6Fb7UNqmsMu+aadTmTFD
9
- N+qJQ6VtYuLQmeJXlhoxtHJLrqpY4tTsSGKpBf3DfFEzpQ7l2YJlCE88T7V8eJHr
10
- nadivG89k9OCtuzkgn1k+hH50uQWZNjgjIEZOI4mGuJREg8GiUpeBJXJvtxAIaQM
11
- 3Txd3kFIcI5XP7qdw+VQ8LaGew+Hu2iYJ03wOx4SvMbwoBvh3D3e0vmHEPJH2j2P
12
- oYYA9ru+GJZdA6uS47SUKQy/aTtcLmIRhMwQyHzn8XfbIIWDwEB5hSuYm1gmiUc7
13
- HbQWkWPIQ8GxrcMbEuDXOBhXAGwU0gEIaK6LkrlJGpTdqGtTFfCHa1sYLcPVpcwn
14
- MWUYZbThayWzgHrw2fV9y8/idVT9VY2MWnt4GOHb5NctTazWosXdubFP+aNM+/oQ
15
- 4r72fgCqEFST7tIunVJTgVAoN7CdqyX3gMbViEe8gh5SDMxPufQ2vTiWw5knNjW9
16
- NJuy/fB702IGqq9l/yn9Y8QUjIxIyGkqxFDMYXIjcwbEk6yR86HSMJgjOjSB4RLk
17
- JWl+dpjH1xL0a6pJWFTJmlvTF1f0efn4gQyT8CIIWiP8A08DvIo2H5rxumVs/g/h
18
- 4iE5aahRwqUCAwEAAaOCAUgwggFEMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQD
7
+ hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAokmf6RXet00IJLeLgt4m6QNgShRMrgj3
8
+ yp+va6xia18OCunl8UiLQ+TIzvWhHRE0RcANYTSsg3+pxR2Yz5TkWu/QDwAjVkCJ
9
+ FthCYwl/Q4NnIWKzJmMd6bga5AwemFlufN5BBY8V5MCD17dlBtgLncAABDs0nBgX
10
+ Sq0JxhR4iPy+2GQbKDcIF62T8+Vdb+NNceQlOtrfDZUIXRPo78mS3Q8Da0rxniQq
11
+ IvIY8BNmM19bbx/oPYPyXaL0neUBFuiwOC8jeRcSox6gqGBHV3yav3ecYpqjyBkh
12
+ EYkW+65jOebeqa3WM3qoD+U7Rpj43RNoQk346oWbLIF5N38SzZUhigY/Wy2vXZQV
13
+ scmsdkSdd1AeWuIs/7qbD/JCGV/ZsfmqE83Pg+br3i414ak1QYwrPxx1ykKVcRR7
14
+ 1o3gF4gb5U+TvaTgfqRxci7GFtdWSAlEAgMMvBPvnjzdgBD86JHXrgyUL/BnKqCn
15
+ iugEKz+dRV7wX/VGACBKYcU6Vg2nQ2y7rZ6u2Y9z55SOjEjX6Wcq/BWnxHU0jNCG
16
+ 5ESFaAd26W1Qe8MTKttUnBO9PmsfJUdJpYqi38tbkyIo11cTvZBOl92fyCFUUxUd
17
+ M4gMpQITjmTJmy/SSORWWvrbpO8KOncepbZBWNQfBc1y2gnQnafsUIyx+mCNM7AI
18
+ z+M3wZjz5tsCAwEAAaOCAUgwggFEMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQD
19
19
  AgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVuU1NMIEdlbmVyYXRlZCBTZXJ2ZXIgQ2Vy
20
- dGlmaWNhdGUwHQYDVR0OBBYEFGGA6/pOoY8g+Yc197W9Cz4hLaTnMIGOBgNVHSME
21
- gYYwgYOAFKNxcsX82KQ9IzqQRylKLFW4esxAoVWkUzBRMQswCQYDVQQGEwJMUzEL
20
+ dGlmaWNhdGUwHQYDVR0OBBYEFEIATGTlQwV6CgYgQmEfeiNfp0e7MIGOBgNVHSME
21
+ gYYwgYOAFJo1Pm5HSapVZszX8+Vl0ue2XXd7oVWkUzBRMQswCQYDVQQGEwJMUzEL
22
22
  MAkGA1UECAwCTkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0
23
- YXNoMQ0wCwYDVQQDDARyb290ghRgfrr/V8NMVU9UvJrGnxJdW09gHjAOBgNVHQ8B
23
+ YXNoMQ0wCwYDVQQDDARyb290ghQ6ac6ApW3Z7MYlBWwWlMHdej4vjzAOBgNVHQ8B
24
24
  Af8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwGgYDVR0RBBMwEYIJbG9jYWxo
25
- b3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQAsUfvrmRDNWTt+RRCQqqgJvC9C
26
- N+FUYzUpyA9YiJK0y6+CqM4bDCSVr90UOK4m3Xg9nVxB7R9SvGgUbJ//nXXzG7ox
27
- bLc82n6pu5w6XysP6qv5AxoSKKdGTq7uI+4dclsEHTJPBuxc57Hhm2hPjjKYqLof
28
- RVAli3cpe/Tg9zjRkUC/jee5GXJZhctA9P3qeN1Jzj27JKe1NakRc9b9Rayr/OAY
29
- PS4GdK97t3YXINnQWYdI3BFpUxEGWx8xgAs2IwPVzJYNgPN0516ZNGYKBuGANSz9
30
- 6kLgBCCNGZoM8MtFgk+KzFiluMxQDYEN4NxBu5AURwoI/G9VjAa+0U9ZxF464J+c
31
- vNfgCybN6oR+1NNWs1YnQQBVrFfueAAjm3L4BJtDyQcp+QAFIRD8ZeMZe+WDQSRY
32
- S9BlvE0W+RCgj+mPZcTmgQUhg/zjNJX8OlLWrgYTVAu+YHaayGcD5Xg3DLU6MRal
33
- ZR2H3CoUGJ6ODg/1jC3IXkgafEUnd9RyfJ0efVnP+9xnMrTcbi1E7jdwrRVXenOS
34
- g1g8MopwFQtwGRRWrvbiJ0KegciggOCZ9m9V7FmaAzy3nukuJusVHjFgZb46VHI5
35
- k5/FuCYE/lmOoMmjEz7EJDaIr9b6uWFbiTJdb6TpGbirpvknD6S/lY8fQJ0Px+Kq
36
- V/1s3vuOtccxBzsBqg==
25
+ b3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQAFHaYGFFEQ3BAKPkA/TLbHxvf8
26
+ XHO3LzU8+z8BS7tDeystSMibgvM+0ESbdgiYcH3fVua+/da9NjGoApxsDlHIwFAB
27
+ T98BADC/PcS0xrgRuRvfq8V+xNiER79EtG21wszpMxX4qA8EVCkslXCQoIAQr4lR
28
+ MOyWjGY9mDRGQou0FJuJ+YiN5+SNYmDVcO8YBKkcc6BtSEyS1YbFp4P6si8ojIHz
29
+ 7BAZCcABVEYmx3FGpbhAqjinWHGq/lF696i+2Srkni/49BC7fCVV7KDPLSsTTZaw
30
+ c/02ghVOaXCDPu8mfc+bLC18yPNWneStZDfwyGYv/6Ip09YvsVZ4YXIR0ax4UUws
31
+ 9x8tbnkHyzoDA2R81YhEgzV4cmN+PvBwnjPNIPa6245xMIlLIgUwAIIpK/m3h1wu
32
+ EGLqdz733Oa+CQlyU+LJY/96GPujaB2fnVKNKH+hUlLqpIEVKBFTDbqJJPreY8LE
33
+ MWsImgMNCLWf3uG8OtSFaNLrmitUdFAVvSqzsPoYqgltX+SRXlVK7SfNaDh/iQe6
34
+ BWuq7JkUbDeNw9zsr6+CPHGrThlxC3o3IOv1LcpjKRlJcVYHtzl7hfMf+nc475wg
35
+ Det8fn12zZGtybG09K/AZGYOazqu9Wkpj66GUptdzz4Ar3RZPHm4haIEyFn3IilU
36
+ fw54dHQCQEFdoxq+jw==
37
37
  -----END CERTIFICATE-----
@@ -1,52 +1,52 @@
1
1
  -----BEGIN PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- OQKC8TxnPneBeeBbqwq4jV6iWyu88oFYboiJSlbxsfNLR+zeuRceKTwR28opxnWt
31
- WwHoSC8lYbav8zGjOfLWGKfQ4yZwcTlYD82MSCcdDhPfBGvZVhp7hlCgRFzgexim
32
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 0cgwoOTkPSo6wMW05Se3Tz8QVF6sDLe0CvmQ8VK+Sr9fqplFH8lqExM2cP+uYP5i
49
- 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
- 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
51
- MGJ4AQKL5oQPPERZoPezO8y+92Wl
2
+ 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
51
+ mk82pTicC3Nc9qBDkBjTzj2eHKs3Glc=
52
52
  -----END PRIVATE KEY-----
@@ -1,32 +1,32 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIFlTCCA32gAwIBAgIULdtAyw/w+y2KRLDCzw7SaWgrtt0wDQYJKoZIhvcNAQEL
2
+ MIIFlTCCA32gAwIBAgIUDJJnsCdhXlt16YBwAdSmPaKhXH8wDQYJKoZIhvcNAQEL
3
3
  BQAwUjELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
4
- cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEOMAwGA1UEAwwFb3RoZXIwHhcNMjMxMDAz
5
- MTY0NzE5WhcNMjgxMDAyMTY0NzE5WjBSMQswCQYDVQQGEwJMUzELMAkGA1UECAwC
4
+ cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEOMAwGA1UEAwwFb3RoZXIwHhcNMjMxMTE2
5
+ MDExMTIyWhcNMjgxMTE1MDExMTIyWjBSMQswCQYDVQQGEwJMUzELMAkGA1UECAwC
6
6
  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
- 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
- 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
- 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
- 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
- k4Yqw0gc0Y/m2G+s+HFGf1aXsE90IC0Qlz9TLpO/EcyUdbKgp2KHR3tTcNyuoHGI
12
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- xnyvwLErBVfxy7Q9hpC09sT5MxdPso9y+XuKtp7mS3xoen2ubPnfODo5GHigZ0H/
25
- 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
- Jb/XC9LkeZvmeQuOAFhMGXN1vA/d28QjsbKZIEn4+BF1U7ctCfkObsM2Ft9pGDQU
27
- 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
- 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
- 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
- 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
- 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
32
32
  -----END CERTIFICATE-----
@@ -6,6 +6,7 @@ require "logstash/inputs/logstash"
6
6
  require "logstash/outputs/logstash"
7
7
  require "rspec/collection_matchers"
8
8
  require "random-port"
9
+ require "timeout"
9
10
 
10
11
  describe 'Logstash Output -> Input complete transmission' do
11
12
 
@@ -26,7 +27,7 @@ describe 'Logstash Output -> Input complete transmission' do
26
27
  # provides: output_events (an array of Events)
27
28
  shared_context 'transmission' do
28
29
  let(:concurrency) { defined?(super) ? super() : 8 }
29
- let(:batch_size) { defined?(super) ? super() : 125 }
30
+ let(:batch_size) { defined?(super) ? super() : 17 }
30
31
 
31
32
  let(:output_events) { [] }
32
33
  let(:errors) { [] }
@@ -48,9 +49,16 @@ describe 'Logstash Output -> Input complete transmission' do
48
49
  loop do
49
50
  batch = transmit_queue.pop(true) rescue break
50
51
  begin
51
- Timeout.timeout(5) do
52
+ # TODO:
53
+ # timeout thread _simulates_ `Timeout::Error: execution expired` exception which will be saved in the queue
54
+ # we need to catch an original plugin exception
55
+ timeout_thread = Thread.new do
52
56
  output_plugin.multi_receive(batch)
53
57
  end
58
+ unless timeout_thread.join(2)
59
+ timeout_thread.kill
60
+ raise Timeout::Error.new("Execution expired")
61
+ end
54
62
  rescue => e
55
63
  error_queue << e
56
64
  end
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative "../spec_helper"
4
+ require "logstash/devutils/rspec/shared_examples"
5
+ require "logstash/utils/load_balancer"
6
+
7
+ #
8
+ # The following is a high-level validation of CURRENT implementation
9
+ # that is tightly-coupled with initial state and is NOT a specification
10
+ # of the behaviour once its initial state has been invalidated by use.
11
+ #
12
+ # A formal validation of the load balancer's behaviour is forthcoming.
13
+ #
14
+ describe LoadBalancer do
15
+ let(:downstream_infos) { %w[1.1.1.1:9801 2.2.2.2:9802 3.3.3.3:9803] }
16
+
17
+ subject(:load_balancer) { described_class.new(downstream_infos) }
18
+
19
+ describe "#initialize" do
20
+ it "checks initialized params" do
21
+ expect(load_balancer.instance_variable_get(:@cool_off)).to eq(60)
22
+ expect(load_balancer.instance_variable_get(:@host_states)).to be_an(Array)
23
+ expect(load_balancer.instance_variable_get(:@host_states).size).eql? 3
24
+ end
25
+ end
26
+
27
+ describe "#route" do
28
+
29
+ describe "with successful data transfer" do
30
+
31
+ it "picks up the candidate host based on last request time" do
32
+ # for the 1st call returns the 1.1.1.1, for the 2nd call returns 2.2.2.2 and so on
33
+ downstream_infos.each do |host_uri |
34
+ load_balancer.select do | selected_host_uri |
35
+ expect(selected_host_uri).to eq(host_uri)
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+ describe "when data transfer fails" do
43
+
44
+ it "applies the cool_off period for the next routes, marks host as error" do
45
+ # sending events to "1.1.1.1:9801" fails, fair load balancer marks the host errored
46
+ begin
47
+ load_balancer.select do | selected_host_uri |
48
+ expect(selected_host_uri).to eq("1.1.1.1:9801")
49
+ raise "Cannot reach the host"
50
+ end
51
+ rescue
52
+ # Ignore
53
+ end
54
+
55
+ # retry sends to "2.2.2.2:9802"
56
+ %w[2.2.2.2:9802 3.3.3.3:9803].each do |host|
57
+ load_balancer.select do | selected_host_uri |
58
+ expect(selected_host_uri).to eq(host)
59
+ end
60
+ end
61
+
62
+ # make sure errored host doesn't get requests in 60s
63
+
64
+ end
65
+ end
66
+ end
67
+ end