logstash-integration-logstash 0.0.5-java → 1.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -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 +251 -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 +29 -29
  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 +178 -17
  37. metadata +22 -5
@@ -1,52 +1,52 @@
1
1
  -----BEGIN PRIVATE KEY-----
2
- MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDW77bJQd9CKFxA
3
- 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
- VvtQ2qawy75pp1OZMUM36olDpW1i4tCZ4leWGjG0ckuuqlji1OxIYqkF/cN8UTOl
5
- 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
- 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
- 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
- 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
- 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
- rNaixd25sU/5o0z7+hDivvZ+AKoQVJPu0i6dUlOBUCg3sJ2rJfeAxtWIR7yCHlIM
11
- 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
- rJHzodIwmCM6NIHhEuQlaX52mMfXEvRrqklYVMmaW9MXV/R5+fiBDJPwIghaI/wD
13
- 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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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
- qqz8F7dtfrY/QYu1vnpoqL7Bw27mKi3SEBm08B8eXeIt5YbVNcvznmB8klrrJj0P
27
- 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
- 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
- 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
- JgKZCHROT8uLToxp+3TKWlDFKAlUDpVyD8XEoYowQdKbX0V4fIgfmqEyCjsv/or/
31
- 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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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
- O4K+8gS/NrdvAp/WMorvIAT5SwN9CipAEVhMfaAC7o1SVaiiGba5n+QD61fm07/b
42
- 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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
+ 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
51
+ XwPEucLA/u3bsMK/R9LyYqJFk7ExFPM=
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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
- 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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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
- IlPlKzxfaYBdkUlAj5v08xH0wh4jOAE7W9XQAVKUi0D+Eh+zZGq53ayc8Og/1Iz2
39
- b/lExDnvj2p/rzspCoWwNrWFX8Xm/1EtOjo1TcSCV7BJoCNh50WOXS8cccE3yjXK
40
- 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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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
- 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
5
- NFowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
4
+ YXNoMQ0wCwYDVQQDDARyb290MB4XDTIzMTEwNjIwNDAyOVoXDTI2MTEwNjIwNDAy
5
+ OVowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
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
+ hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxQBfZCudTxMwzEBMk0515q0vmFibHP/Q
8
+ tFZ0Z/5ord8JnI64wsB6RwGmov74G8JnF/HJq/H/3Cz4ydWv1MsHzfUyyG7GHchN
9
+ HHbVjJX0JP3VJxjurxcZyrn8Yyg2c5aIPm/lSDeW0+3YLzIEMpxKtqILuFE/87DE
10
+ R0wIl2TI74ZGV+QxZc4FfSdwRkdkyOYcRPhw5YoMjKUzjLUIVfEMO21oFLjWRFje
11
+ KK3y55PutkdVq07U2TTtk7ubfKJ9u2Aix6eK18vnI9SLxuqCN49XyUT/TPtXm5tw
12
+ vj1BIC4+7uKZG/bCazJGAf0W7H057AEdSkLWASuBoRHS5VXxv6rwI1joMyGMpAxK
13
+ F6byK84kiApJ0l8Qou0JiHOUQQzOPblHkhAQprW+4Jp0H60Rfpw6cqGoWYyHU5XF
14
+ Xp7arW7LKbLrms889HeNuCDTvzpPss6kzjajl8+qnzgA7hroriZFLFf870aEyeXV
15
+ RRQh1EVPfstxloTagHOnasOKK4glHY5+x9QrvHxFwjP/kvcwUwnaebPlYyXc0wi9
16
+ MWyD57NfTGkt7wRlOjzgRv8orZJG750OKBAcD3kx0XC12sMKT1sOJ+sXTRoLs2DN
17
+ ftqZrvQYrYJx0804Nw2Q9Jrd5y1Rcz2jULhfrJKxO8Y1mgxZs1CF4Ptl1r8+wq6H
18
+ cdvgDKwP0KMCAwEAAaOCAUgwggFEMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQD
19
19
  AgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVuU1NMIEdlbmVyYXRlZCBTZXJ2ZXIgQ2Vy
20
- dGlmaWNhdGUwHQYDVR0OBBYEFGGA6/pOoY8g+Yc197W9Cz4hLaTnMIGOBgNVHSME
21
- gYYwgYOAFKNxcsX82KQ9IzqQRylKLFW4esxAoVWkUzBRMQswCQYDVQQGEwJMUzEL
20
+ dGlmaWNhdGUwHQYDVR0OBBYEFOvmaqA28FdH8OAQJN571iYFPZvBMIGOBgNVHSME
21
+ gYYwgYOAFBdxrtaEOv+0sfpQHlaYEhNF6EMeoVWkUzBRMQswCQYDVQQGEwJMUzEL
22
22
  MAkGA1UECAwCTkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0
23
- YXNoMQ0wCwYDVQQDDARyb290ghRgfrr/V8NMVU9UvJrGnxJdW09gHjAOBgNVHQ8B
23
+ YXNoMQ0wCwYDVQQDDARyb290ghQcp86ejOIGw62JMt2+wCZh7JQvoTAOBgNVHQ8B
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/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQAnjQG9RCBvlTr+PYupOjtFLxkR
26
+ ZET1ilrxt3IGYjeSB1G5Ga41mPwlVpAIyH6qrM5sXt5gGcjw3qUxsxnWsWM+qLzL
27
+ PU1ui+0hRlgdmTaGzE/uUsfEILjDqarNWKqsLIrYU1qBy/MB7COPQK16/S5C/fWp
28
+ ZJ6ms9C48pM3zBq25BCVKsot3ptREVLSPIt1bktNRnwlpz/EdjcrAMEbDJSXulJ8
29
+ VQy+zPmDKN00w3JfN1edf97kzfxj8o0gGANbuu/gm5+oIcGMLQslV7Itc93dN4AD
30
+ 99eJPVEJT8vbEIAZSTFsOvzA1Qs8S1plsGJVYlqeHD4+gE5w+hBxxB/o6wuVejT7
31
+ f1G/xcCxNK6nt2dXyD8psLUKYoWrjwB/txXAzFSmlR4SrUPsH/6Xlu6yOTTVSraC
32
+ D9wGC/m6cWVqh5LDbMQItOc/R/feNuOhATOD1LGsX3+BIPCOCrfuymxLRyVFm/Z1
33
+ R5E6LL8uOJh3anuZ3AXzg5PHGmLTct5hlNHNYuoiZp43dQBKh8VdkhrQb1Acb4Jb
34
+ 9ZbqqLAdvoFkFTIGm4D5xNjauH5HnbG1CNHXoJuNej5vZ724z046lnpjnnJ3pgNX
35
+ /SgPzZ3VclzzNnm3Umz//dNPRT93juqwICI+B6WOCEXq/LW8dfhVlLsaQcyj0eA9
36
+ SJBXV5v1wG37LTPtVQ==
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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
- HNGP5thvrPhxRn9Wl7BPdCAtEJc/Uy6TvxHMlHWyoKdih0d7U3DcrqBxiKkAtpZV
7
- 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
- q1QXum6H+wzCLhJVUPxOGx4y8/5BQDl3idKnUZUUIu42xKz7WVFN6Co9XfMevVv6
9
- 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
- 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
- imxNjUEZKVwO7aUC7gJ7VXX4UqQ9EnhljhAVwPzQspeh3ASCvHP3n20CszHspG2m
12
- mreINMCb27+hXMQiBIQWjNxdHAwwAfkViPkA/QMZVdsV2YbEoy6vZByOW151QNVd
13
- 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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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
- 9OwKdNPsGyxBTXJFsou44bZvTJ0myyvY7KLSXpZWdbPc0399fnZwkHcB6BzQdI6q
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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
- 28gInI9XhQgbzghWAh+9Y8lf+X6QbH88dXQq+RgR54GREHY1L/rWHPoiu/Q/gE4a
35
- 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
- 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
- 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
- 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
- 2qYMmtHsetFARV12BACHWHUsq+LFQV+mD0tYEH+/rKjW8WWmrG8xofWQk2Yu+vlQ
40
- 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
- Hx9/RBo4LLBGIXj/a4Jxd4/eI0iBEVxLSLpV9fdSE9Nadu+sfrGTJc9hDvmgw6gA
42
- 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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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
- b2rlOuCho+0YgM0UIlmPxvZtKAao94l0Lta3gIu8xP199LO4QF2LGzbHOY5id63e
50
- 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
51
- MGJ4AQKL5oQPPERZoPezO8y+92Wl
2
+ MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCnKff+hIY3/ktQ
3
+ djNJOQQulLr2KbO8+ILt2CwzVk5/u3ncTf16l180/0hKUiZLg80SQuFssJRrYVlE
4
+ qgfF6zAZ63jndIaFpadTO+uxKpl4idI6QocT9p7a0EOIVgnh5tt96U47UwRXAOGY
5
+ mAplUVij3sM3YCkwR8nmVn5gOf0o06yYjMvM6PklYxyL7MRbxHfNy0aCeLXfG3j1
6
+ /aiFS1BmnhGKS1c2NAh6tqS1j3YuMuFDYDXo0+L/8XOHZOvdnBWr7jxN3VTUr9TR
7
+ 7ayN5WNfLapCM7nhrMiw2BhgqsL3tTuYSrV8wcNurltWUTd0ar26QjkLg7L+IBYX
8
+ nTrawaYVY0wms29RiSzX6xf13tPQgv0g5muaTK8HbyXlLDqolJnu2E8WmfgtOAnx
9
+ HH0wjOcY/aIlGxPnZio+Ga2Wj6kci5yy/E3pLCIRGGc+E414NlViD1Ztku7XS+4g
10
+ 7hg5t5t2loKmK08sU+IHEDySqBZkoaBwJ53P52uyta/M0RPDRDxlSMYbzrikZrj9
11
+ avUg3OxJI3kdbkLkxU3HX7QGaz0q5f2gcjKKrUZ2cLkOF4ro9hK36RDNA6PE1R7O
12
+ YoLoEy90JmPn9wpIXRR+qxo2PCXg0N5EBeolyEYzDEYAH4wR+pLob6xUTqAgiTdE
13
+ Hq9UfDgJLyPIZQyr2SOXxq0Y54UigwIDAQABAoICADxpsYOdV3iDAasJnM1Yuscu
14
+ 30a5mYiw83iLyKWhCmulUIwq73HPpQvdOr4JZGekMYfo/dkvE+Se4QksvfRsZAzq
15
+ Cd70QO2qCYfOPwbfU2m5vW1qv7CaT5za6Z0rIxUuPqMJn0lXXlknK2DfidpGBNfs
16
+ WPb5XMljGHeTSMb0DickINtc/waGKAy3/ggfwHM91OJeFZRvlaMVJakZTD8oEd2U
17
+ QNiPE+y1716SBYLMXzShFMIp0jHb6cz/8PW8pnWHxFlHlym41MCs7ygTUmpRvZEX
18
+ StH0KbiCnmEzJ9Q/woiNSgVm8qIs0Ll+b+oJHhaHwRvAdSdRKG4pIHLWUv/ePmwk
19
+ 08y6BK/lH7ZE93O2j4m0hrJ4MmB/3p4uS2ks5s3TVou9PEj5j2zSqR29MWksUnzB
20
+ VqzDeYJ6thgdxgMl6E7I7KsdcHa+lVQbpMP87St0tNy1dWabLQYmwLd9CWHagvSp
21
+ Cs9yucgzJeCn7X0k7qt3cMEwZZGE6iOTtBKHz8zWUVsQvItn6R6b5LdtxwS9LpN3
22
+ kmu6ufFjhkq6k21mBvcFfA2SKd1B1YGF7V7WQ2oKJ409ryM2BvHKsAO5GP+wNMFA
23
+ qJQMmI8GHDB1ThPcsH2o7ySW3+spyXWvCswfkFI06BEY56OQBsCMsSHni4hrC+iY
24
+ m7IntoMWPf54kAQecF5xAoIBAQDSadAXH4u1i9MGP4XxS1gYKy+6HPEE2Zb8n2fc
25
+ jEF+A3rZFSX+WQIeoQAilLsiUffZ6yGeDVkbAwBnKN5wuoW9Ecx2u3+DPvLVAAEh
26
+ uanpF9fTygAPNg6qp5gux3ynNIEoPO/xe4JZe3IvLPtCLURl87bkK9xmvE3QY6YJ
27
+ PqFY+VCURzYO7PjgFzPhzkLbqArVOHKoeOgaqI97ti1klDISqgX7ZqjHtNtSkb5h
28
+ qE+radijJyE7+QZGTNtCtEesQRiNSm1tveGry7rZ/TQd4GkbazFtPXIufo5TYTyr
29
+ eve2wCnDwPHsoFLGOuMQag9UZjKRFM89VvZCma6EZfOUsJ+bAoIBAQDLYWiALCuf
30
+ mdlLuVr4UTmhPJcCbQaTwGfCHOrifmTnQ5KOF9u6POztfBb2/7m344ifS4LKJDnK
31
+ RCUWdqh+GJ2wd+YOSyZuHtPu75z+F+U9HxZ9zbty18duwgTdRGg9aTR829ZEcvjA
32
+ Xm8dwpGtAttRFYFsylVbnZZQYaAhEzLooiuQaQT7HjABgrhVg8AH3f+dVv6GvFAd
33
+ OuRf4JQbHd2dlfTSLYWo98kwmtilz2ZKdW4a8d1xf+xFaSKNBP7roicYt7f7HdIL
34
+ 4QeBXLkFzs7MoAfMaNhf3zCtLAW3cT83gmToM5SJul0RMGIhGCUaHGZB1kNy0mW3
35
+ NkciwUZZeNs5AoIBAD+I3eGtj9UQ1HaFhd9XXdFmcPHkvU42maXMSGNLIpd3W4fj
36
+ H+bOX5p6CP1oJZ12XL27hxofc7F5VYzQxWIKoEl372JGuXka794rMyxI0KpmnbAA
37
+ xcXSD9mt44D0kYo3i2xoAhfLsI9ufAsMrQ3Nd2LFlYsOR23qHCD5hfAyriuclJ1B
38
+ Z2xYV8nql6ruSjfjZOn/Mnf2kjdCgJjdaJV/PiNunYHM/NfYn4UuJut8FBpxSo3x
39
+ SdK/HgrqOCbLIv07Zrt7JtHFTTg/uzsJfswqr/Isiu8uZ6TsZ/N7YANzjQrsuW+3
40
+ ehV2T6g1rcyOCfT1Kv2t5+ngsVlo6E5oLoXOU1MCggEBAMegIdmFAYCTmyTnl7Ia
41
+ z+1CMpsP9p+6AF4Y0jhkhZg1zDkqk+L2gDwOS+A/W8RyUpzAmmzdJ9gwERM+ft3e
42
+ PZGD7kzjWKJIIg/qI3eIbtsSk5oCANaVk8xUJkAlMAfvJrTTdzoSe7UePATDAQgH
43
+ wMuSx0nIRAY75NmbKXitho+u9gG2A0yU8dvZuiM9wZQ3Q/nk9Mm9Nwmpz5WIMvd2
44
+ 1hsioH5YblROeqz5oGMH8shtARjzhD8up/PtYRt35tvUenmZgr26JHzCcQJ5x6Y6
45
+ uuNAxMbPtmpMAVRI3IeVYc6Tb4Y3crnJMiZ4DimbsHcznu9KZ0Ph3jL51NL5UJrr
46
+ tIkCggEBAI9apLWyAA+XzclgNzE490sncwGR8530rbWtbQtEMuwSDsouQaSNoCrO
47
+ 8/0SIXeHRXVqEzwV2fS/qeoy+YUOJU3Zt85GCs/ou5ifgU6SoEMNvhqMtMhI1/Yj
48
+ b7/g9mhChlSdxSiRSHwzOZkRnSeVVwwnAFx763vP606NoZp25hi51+kiNLGwg/T3
49
+ 2MJU9N7SgqmUftS7sMLYs5er+L5OVfgCRVVPyT+4ZOX9+Vc0m9S2o3QuZfpq/2lC
50
+ 4imyf766bwgjEcp/EU6H0zyvgBXfMLTc8qKESOhaxqZ/cYLX5DbKXt4nfDM3Poy4
51
+ xIKn2U+7LZNOiJG0EgGsS2ItefwY1+A=
52
52
  -----END PRIVATE KEY-----
@@ -1,32 +1,32 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIFlTCCA32gAwIBAgIULdtAyw/w+y2KRLDCzw7SaWgrtt0wDQYJKoZIhvcNAQEL
2
+ MIIFlTCCA32gAwIBAgIULx8EZhbv3fxDxu0AujSHZ7XPPMEwDQYJKoZIhvcNAQEL
3
3
  BQAwUjELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
4
- cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEOMAwGA1UEAwwFb3RoZXIwHhcNMjMxMDAz
5
- MTY0NzE5WhcNMjgxMDAyMTY0NzE5WjBSMQswCQYDVQQGEwJMUzELMAkGA1UECAwC
4
+ cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEOMAwGA1UEAwwFb3RoZXIwHhcNMjMxMTA2
5
+ MjA0MDM2WhcNMjgxMTA1MjA0MDM2WjBSMQswCQYDVQQGEwJMUzELMAkGA1UECAwC
6
6
  TkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0YXNoMQ4wDAYD
7
- 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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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
- Meykbaaat4g0wJvbv6FcxCIEhBaM3F0cDDAB+RWI+QD9AxlV2xXZhsSjLq9kHI5b
18
- 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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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
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