redis 4.0.1 → 4.1.0
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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +38 -0
 - data/README.md +46 -1
 - data/lib/redis/client.rb +29 -12
 - data/lib/redis/cluster/command.rb +81 -0
 - data/lib/redis/cluster/command_loader.rb +34 -0
 - data/lib/redis/cluster/key_slot_converter.rb +72 -0
 - data/lib/redis/cluster/node.rb +104 -0
 - data/lib/redis/cluster/node_key.rb +35 -0
 - data/lib/redis/cluster/node_loader.rb +37 -0
 - data/lib/redis/cluster/option.rb +77 -0
 - data/lib/redis/cluster/slot.rb +69 -0
 - data/lib/redis/cluster/slot_loader.rb +49 -0
 - data/lib/redis/cluster.rb +286 -0
 - data/lib/redis/connection/ruby.rb +5 -2
 - data/lib/redis/distributed.rb +13 -6
 - data/lib/redis/errors.rb +46 -0
 - data/lib/redis/pipeline.rb +9 -1
 - data/lib/redis/version.rb +1 -1
 - data/lib/redis.rb +692 -25
 - metadata +27 -184
 - data/.gitignore +0 -16
 - data/.travis/Gemfile +0 -13
 - data/.travis.yml +0 -73
 - data/.yardopts +0 -3
 - data/Gemfile +0 -3
 - data/benchmarking/logging.rb +0 -71
 - data/benchmarking/pipeline.rb +0 -51
 - data/benchmarking/speed.rb +0 -21
 - data/benchmarking/suite.rb +0 -24
 - data/benchmarking/worker.rb +0 -71
 - data/bors.toml +0 -14
 - data/examples/basic.rb +0 -15
 - data/examples/consistency.rb +0 -114
 - data/examples/dist_redis.rb +0 -43
 - data/examples/incr-decr.rb +0 -17
 - data/examples/list.rb +0 -26
 - data/examples/pubsub.rb +0 -37
 - data/examples/sentinel/sentinel.conf +0 -9
 - data/examples/sentinel/start +0 -49
 - data/examples/sentinel.rb +0 -41
 - data/examples/sets.rb +0 -36
 - data/examples/unicorn/config.ru +0 -3
 - data/examples/unicorn/unicorn.rb +0 -20
 - data/makefile +0 -42
 - data/redis.gemspec +0 -42
 - data/test/bitpos_test.rb +0 -63
 - data/test/blocking_commands_test.rb +0 -40
 - data/test/client_test.rb +0 -59
 - data/test/command_map_test.rb +0 -28
 - data/test/commands_on_hashes_test.rb +0 -19
 - data/test/commands_on_hyper_log_log_test.rb +0 -19
 - data/test/commands_on_lists_test.rb +0 -18
 - data/test/commands_on_sets_test.rb +0 -75
 - data/test/commands_on_sorted_sets_test.rb +0 -150
 - data/test/commands_on_strings_test.rb +0 -99
 - data/test/commands_on_value_types_test.rb +0 -171
 - data/test/connection_handling_test.rb +0 -275
 - data/test/connection_test.rb +0 -57
 - data/test/db/.gitkeep +0 -0
 - data/test/distributed_blocking_commands_test.rb +0 -44
 - data/test/distributed_commands_on_hashes_test.rb +0 -8
 - data/test/distributed_commands_on_hyper_log_log_test.rb +0 -31
 - data/test/distributed_commands_on_lists_test.rb +0 -20
 - data/test/distributed_commands_on_sets_test.rb +0 -106
 - data/test/distributed_commands_on_sorted_sets_test.rb +0 -16
 - data/test/distributed_commands_on_strings_test.rb +0 -69
 - data/test/distributed_commands_on_value_types_test.rb +0 -93
 - data/test/distributed_commands_requiring_clustering_test.rb +0 -162
 - data/test/distributed_connection_handling_test.rb +0 -21
 - data/test/distributed_internals_test.rb +0 -68
 - data/test/distributed_key_tags_test.rb +0 -50
 - data/test/distributed_persistence_control_commands_test.rb +0 -24
 - data/test/distributed_publish_subscribe_test.rb +0 -90
 - data/test/distributed_remote_server_control_commands_test.rb +0 -64
 - data/test/distributed_scripting_test.rb +0 -100
 - data/test/distributed_sorting_test.rb +0 -18
 - data/test/distributed_test.rb +0 -56
 - data/test/distributed_transactions_test.rb +0 -30
 - data/test/encoding_test.rb +0 -14
 - data/test/error_replies_test.rb +0 -57
 - data/test/fork_safety_test.rb +0 -60
 - data/test/helper.rb +0 -201
 - data/test/helper_test.rb +0 -22
 - data/test/internals_test.rb +0 -389
 - data/test/lint/blocking_commands.rb +0 -150
 - data/test/lint/hashes.rb +0 -162
 - data/test/lint/hyper_log_log.rb +0 -60
 - data/test/lint/lists.rb +0 -143
 - data/test/lint/sets.rb +0 -140
 - data/test/lint/sorted_sets.rb +0 -316
 - data/test/lint/strings.rb +0 -246
 - data/test/lint/value_types.rb +0 -130
 - data/test/persistence_control_commands_test.rb +0 -24
 - data/test/pipelining_commands_test.rb +0 -238
 - data/test/publish_subscribe_test.rb +0 -280
 - data/test/remote_server_control_commands_test.rb +0 -175
 - data/test/scanning_test.rb +0 -407
 - data/test/scripting_test.rb +0 -76
 - data/test/sentinel_command_test.rb +0 -78
 - data/test/sentinel_test.rb +0 -253
 - data/test/sorting_test.rb +0 -57
 - data/test/ssl_test.rb +0 -69
 - data/test/support/connection/hiredis.rb +0 -1
 - data/test/support/connection/ruby.rb +0 -1
 - data/test/support/connection/synchrony.rb +0 -17
 - data/test/support/redis_mock.rb +0 -130
 - data/test/support/ssl/gen_certs.sh +0 -31
 - data/test/support/ssl/trusted-ca.crt +0 -25
 - data/test/support/ssl/trusted-ca.key +0 -27
 - data/test/support/ssl/trusted-cert.crt +0 -81
 - data/test/support/ssl/trusted-cert.key +0 -28
 - data/test/support/ssl/untrusted-ca.crt +0 -26
 - data/test/support/ssl/untrusted-ca.key +0 -27
 - data/test/support/ssl/untrusted-cert.crt +0 -82
 - data/test/support/ssl/untrusted-cert.key +0 -28
 - data/test/support/wire/synchrony.rb +0 -24
 - data/test/support/wire/thread.rb +0 -5
 - data/test/synchrony_driver.rb +0 -85
 - data/test/test.conf.erb +0 -9
 - data/test/thread_safety_test.rb +0 -60
 - data/test/transactions_test.rb +0 -262
 - data/test/unknown_commands_test.rb +0 -12
 - data/test/url_param_test.rb +0 -136
 
| 
         @@ -1,81 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            Certificate:
         
     | 
| 
       2 
     | 
    
         
            -
                Data:
         
     | 
| 
       3 
     | 
    
         
            -
                    Version: 3 (0x2)
         
     | 
| 
       4 
     | 
    
         
            -
                    Serial Number: 14908262977180600576 (0xcee4ca30bcf50900)
         
     | 
| 
       5 
     | 
    
         
            -
                Signature Algorithm: sha1WithRSAEncryption
         
     | 
| 
       6 
     | 
    
         
            -
                    Issuer: C=IT, ST=Sicily, L=Catania, O=Redis, OU=Security, CN=127.0.0.1
         
     | 
| 
       7 
     | 
    
         
            -
                    Validity
         
     | 
| 
       8 
     | 
    
         
            -
                        Not Before: Apr  2 03:34:42 2016 GMT
         
     | 
| 
       9 
     | 
    
         
            -
                        Not After : Jun 23 03:34:42 2050 GMT
         
     | 
| 
       10 
     | 
    
         
            -
                    Subject: C=IT, ST=Sicily, O=Redis, OU=Security, CN=127.0.0.1
         
     | 
| 
       11 
     | 
    
         
            -
                    Subject Public Key Info:
         
     | 
| 
       12 
     | 
    
         
            -
                        Public Key Algorithm: rsaEncryption
         
     | 
| 
       13 
     | 
    
         
            -
                            Public-Key: (2048 bit)
         
     | 
| 
       14 
     | 
    
         
            -
                            Modulus:
         
     | 
| 
       15 
     | 
    
         
            -
                                00:ab:bf:ac:ef:dc:99:35:fa:07:3f:d5:33:86:f1:
         
     | 
| 
       16 
     | 
    
         
            -
                                7d:9e:57:8b:d5:c1:10:04:0c:35:95:7c:61:ff:05:
         
     | 
| 
       17 
     | 
    
         
            -
                                a6:f9:ef:71:5c:c5:83:68:a2:ad:5d:0f:a5:2b:b4:
         
     | 
| 
       18 
     | 
    
         
            -
                                76:9f:36:8f:df:75:fb:d6:48:00:c0:f0:68:56:f6:
         
     | 
| 
       19 
     | 
    
         
            -
                                49:84:4d:4e:e1:ca:dd:24:9f:2f:5e:7c:35:26:57:
         
     | 
| 
       20 
     | 
    
         
            -
                                d6:d5:95:d1:3f:40:32:22:43:2c:8c:b7:8c:89:56:
         
     | 
| 
       21 
     | 
    
         
            -
                                7c:d0:94:e5:f7:cf:4a:51:3f:60:b2:fe:1f:3b:38:
         
     | 
| 
       22 
     | 
    
         
            -
                                d6:47:5d:2e:4f:38:75:d9:9b:c8:0f:d1:fd:91:5a:
         
     | 
| 
       23 
     | 
    
         
            -
                                07:c3:94:95:1f:7b:f1:ae:dc:a1:83:e2:6b:78:05:
         
     | 
| 
       24 
     | 
    
         
            -
                                34:b3:8b:87:86:31:9f:cc:8b:15:cd:18:2e:06:36:
         
     | 
| 
       25 
     | 
    
         
            -
                                ca:f8:29:f8:6e:93:60:78:ec:8a:e8:a6:94:ad:24:
         
     | 
| 
       26 
     | 
    
         
            -
                                a8:e3:d4:ac:42:da:52:0f:34:e8:d0:10:e5:53:db:
         
     | 
| 
       27 
     | 
    
         
            -
                                f8:3a:56:48:10:33:df:80:70:1c:72:5e:1f:c3:11:
         
     | 
| 
       28 
     | 
    
         
            -
                                bb:3b:b9:6b:0a:e0:82:eb:67:d4:8f:5c:30:d3:cf:
         
     | 
| 
       29 
     | 
    
         
            -
                                17:6d:86:01:0e:ae:43:c1:d8:c0:5e:99:ef:fa:60:
         
     | 
| 
       30 
     | 
    
         
            -
                                0a:f2:62:68:62:8b:05:f3:8b:b1:34:d8:70:78:35:
         
     | 
| 
       31 
     | 
    
         
            -
                                74:76:c2:46:13:a3:1f:5d:7b:3b:49:20:1e:98:54:
         
     | 
| 
       32 
     | 
    
         
            -
                                63:77
         
     | 
| 
       33 
     | 
    
         
            -
                            Exponent: 65537 (0x10001)
         
     | 
| 
       34 
     | 
    
         
            -
                    X509v3 extensions:
         
     | 
| 
       35 
     | 
    
         
            -
                        X509v3 Basic Constraints: 
         
     | 
| 
       36 
     | 
    
         
            -
                            CA:FALSE
         
     | 
| 
       37 
     | 
    
         
            -
                        Netscape Comment: 
         
     | 
| 
       38 
     | 
    
         
            -
                            OpenSSL Generated Certificate
         
     | 
| 
       39 
     | 
    
         
            -
                        X509v3 Subject Key Identifier: 
         
     | 
| 
       40 
     | 
    
         
            -
                            81:DE:C0:39:F9:8A:57:50:DB:B1:6A:B3:D0:5F:E9:2C:87:5A:1E:3D
         
     | 
| 
       41 
     | 
    
         
            -
                        X509v3 Authority Key Identifier: 
         
     | 
| 
       42 
     | 
    
         
            -
                            keyid:F9:81:BD:90:94:77:57:2D:F5:77:B4:15:CB:14:40:63:22:93:2B:5F
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                Signature Algorithm: sha1WithRSAEncryption
         
     | 
| 
       45 
     | 
    
         
            -
                     a3:0a:d7:22:5a:bc:cc:f6:ed:2f:f2:9f:dd:e0:46:02:73:14:
         
     | 
| 
       46 
     | 
    
         
            -
                     dd:a7:f5:39:b9:16:19:16:36:b6:22:5c:66:14:c0:d3:ac:55:
         
     | 
| 
       47 
     | 
    
         
            -
                     fc:52:2d:c3:b2:70:5f:cf:3d:23:71:78:e9:31:88:65:2c:2e:
         
     | 
| 
       48 
     | 
    
         
            -
                     4a:09:6e:4b:97:bb:4d:38:87:d8:25:ed:bb:ed:62:19:08:50:
         
     | 
| 
       49 
     | 
    
         
            -
                     f2:40:cc:39:ee:f9:a8:3a:5d:2b:e7:34:eb:8a:74:c7:c9:bc:
         
     | 
| 
       50 
     | 
    
         
            -
                     88:9b:9b:ca:5b:11:20:ca:53:b2:0b:20:49:fc:b9:f7:ec:03:
         
     | 
| 
       51 
     | 
    
         
            -
                     c9:5d:c1:24:75:27:f8:7c:70:dc:6a:2c:98:48:93:5f:7f:7e:
         
     | 
| 
       52 
     | 
    
         
            -
                     94:a1:cf:79:b3:24:e3:de:9e:f0:0f:d8:d6:3e:c9:52:30:31:
         
     | 
| 
       53 
     | 
    
         
            -
                     87:90:c2:d2:23:be:d8:7a:e9:e6:bb:4b:00:75:30:49:4b:98:
         
     | 
| 
       54 
     | 
    
         
            -
                     d5:f6:7d:b5:83:b5:57:85:20:98:00:51:55:c3:a2:81:ec:6c:
         
     | 
| 
       55 
     | 
    
         
            -
                     11:91:33:60:14:7b:d2:01:ee:5b:bf:5b:68:f5:e0:4e:45:0a:
         
     | 
| 
       56 
     | 
    
         
            -
                     68:cd:33:4f:29:72:fa:fe:6a:19:b6:84:70:90:a4:d5:7a:04:
         
     | 
| 
       57 
     | 
    
         
            -
                     2e:da:5b:98:4f:e4:aa:a6:c4:68:aa:5c:8c:a5:5e:df:20:94:
         
     | 
| 
       58 
     | 
    
         
            -
                     22:f7:37:45:71:a4:bc:72:34:ee:42:cf:9d:0f:fb:4a:39:d1:
         
     | 
| 
       59 
     | 
    
         
            -
                     8e:41:f3:3f
         
     | 
| 
       60 
     | 
    
         
            -
            -----BEGIN CERTIFICATE-----
         
     | 
| 
       61 
     | 
    
         
            -
            MIIDvDCCAqSgAwIBAgIJAM7kyjC89QkAMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNV
         
     | 
| 
       62 
     | 
    
         
            -
            BAYTAklUMQ8wDQYDVQQIEwZTaWNpbHkxEDAOBgNVBAcTB0NhdGFuaWExDjAMBgNV
         
     | 
| 
       63 
     | 
    
         
            -
            BAoTBVJlZGlzMREwDwYDVQQLEwhTZWN1cml0eTESMBAGA1UEAxMJMTI3LjAuMC4x
         
     | 
| 
       64 
     | 
    
         
            -
            MCAXDTE2MDQwMjAzMzQ0MloYDzIwNTAwNjIzMDMzNDQyWjBVMQswCQYDVQQGEwJJ
         
     | 
| 
       65 
     | 
    
         
            -
            VDEPMA0GA1UECBMGU2ljaWx5MQ4wDAYDVQQKEwVSZWRpczERMA8GA1UECxMIU2Vj
         
     | 
| 
       66 
     | 
    
         
            -
            dXJpdHkxEjAQBgNVBAMTCTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEP
         
     | 
| 
       67 
     | 
    
         
            -
            ADCCAQoCggEBAKu/rO/cmTX6Bz/VM4bxfZ5Xi9XBEAQMNZV8Yf8FpvnvcVzFg2ii
         
     | 
| 
       68 
     | 
    
         
            -
            rV0PpSu0dp82j991+9ZIAMDwaFb2SYRNTuHK3SSfL158NSZX1tWV0T9AMiJDLIy3
         
     | 
| 
       69 
     | 
    
         
            -
            jIlWfNCU5ffPSlE/YLL+Hzs41kddLk84ddmbyA/R/ZFaB8OUlR978a7coYPia3gF
         
     | 
| 
       70 
     | 
    
         
            -
            NLOLh4Yxn8yLFc0YLgY2yvgp+G6TYHjsiuimlK0kqOPUrELaUg806NAQ5VPb+DpW
         
     | 
| 
       71 
     | 
    
         
            -
            SBAz34BwHHJeH8MRuzu5awrggutn1I9cMNPPF22GAQ6uQ8HYwF6Z7/pgCvJiaGKL
         
     | 
| 
       72 
     | 
    
         
            -
            BfOLsTTYcHg1dHbCRhOjH117O0kgHphUY3cCAwEAAaN7MHkwCQYDVR0TBAIwADAs
         
     | 
| 
       73 
     | 
    
         
            -
            BglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYD
         
     | 
| 
       74 
     | 
    
         
            -
            VR0OBBYEFIHewDn5ildQ27Fqs9Bf6SyHWh49MB8GA1UdIwQYMBaAFPmBvZCUd1ct
         
     | 
| 
       75 
     | 
    
         
            -
            9Xe0FcsUQGMikytfMA0GCSqGSIb3DQEBBQUAA4IBAQCjCtciWrzM9u0v8p/d4EYC
         
     | 
| 
       76 
     | 
    
         
            -
            cxTdp/U5uRYZFja2IlxmFMDTrFX8Ui3DsnBfzz0jcXjpMYhlLC5KCW5Ll7tNOIfY
         
     | 
| 
       77 
     | 
    
         
            -
            Je277WIZCFDyQMw57vmoOl0r5zTrinTHybyIm5vKWxEgylOyCyBJ/Ln37APJXcEk
         
     | 
| 
       78 
     | 
    
         
            -
            dSf4fHDcaiyYSJNff36Uoc95syTj3p7wD9jWPslSMDGHkMLSI77Yeunmu0sAdTBJ
         
     | 
| 
       79 
     | 
    
         
            -
            S5jV9n21g7VXhSCYAFFVw6KB7GwRkTNgFHvSAe5bv1to9eBORQpozTNPKXL6/moZ
         
     | 
| 
       80 
     | 
    
         
            -
            toRwkKTVegQu2luYT+SqpsRoqlyMpV7fIJQi9zdFcaS8cjTuQs+dD/tKOdGOQfM/
         
     | 
| 
       81 
     | 
    
         
            -
            -----END CERTIFICATE-----
         
     | 
| 
         @@ -1,28 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            -----BEGIN PRIVATE KEY-----
         
     | 
| 
       2 
     | 
    
         
            -
            MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrv6zv3Jk1+gc/
         
     | 
| 
       3 
     | 
    
         
            -
            1TOG8X2eV4vVwRAEDDWVfGH/Bab573FcxYNooq1dD6UrtHafNo/fdfvWSADA8GhW
         
     | 
| 
       4 
     | 
    
         
            -
            9kmETU7hyt0kny9efDUmV9bVldE/QDIiQyyMt4yJVnzQlOX3z0pRP2Cy/h87ONZH
         
     | 
| 
       5 
     | 
    
         
            -
            XS5POHXZm8gP0f2RWgfDlJUfe/Gu3KGD4mt4BTSzi4eGMZ/MixXNGC4GNsr4Kfhu
         
     | 
| 
       6 
     | 
    
         
            -
            k2B47IroppStJKjj1KxC2lIPNOjQEOVT2/g6VkgQM9+AcBxyXh/DEbs7uWsK4ILr
         
     | 
| 
       7 
     | 
    
         
            -
            Z9SPXDDTzxdthgEOrkPB2MBeme/6YAryYmhiiwXzi7E02HB4NXR2wkYTox9deztJ
         
     | 
| 
       8 
     | 
    
         
            -
            IB6YVGN3AgMBAAECggEASmOxIgtoiQqMzUcpFE/Q2x6MQL9okng/VUoUoALwudzO
         
     | 
| 
       9 
     | 
    
         
            -
            OyKJsm6TrHU0U2PM5VUap+1QcRWqzebTKqduXFGn0wCtHEmemMwvsTXmpYhIo57I
         
     | 
| 
       10 
     | 
    
         
            -
            mDKEP0bZJjtBwI5dtSIhzGMpHR4YpOwPU8W2YzXPRbvFwaRwsd5O8pWOqZ5jphrQ
         
     | 
| 
       11 
     | 
    
         
            -
            DtkLNz4hIFsMihPeYFpuAjsZ2cMIGPtlY2qbfjyno7hd7LxNzL/2vMlDw5MHHtw4
         
     | 
| 
       12 
     | 
    
         
            -
            snxLN92KomC6rSUUydNDyemyMpg8iRwm7gmYzVoZf6aTbI2RdFcv2KZfpUWYdB+I
         
     | 
| 
       13 
     | 
    
         
            -
            yU8ZV1Sch7VQ+xLVy74SuY8AZ2Rq4S3M+EmEa5ghoQKBgQDfgOIyStulfYn6UC1A
         
     | 
| 
       14 
     | 
    
         
            -
            OYwcGoSOaVNfPE/m9BZN58xK0+XnEqQECMsyg/GYS65Zri4+KJYPxqv6f9ljLTGE
         
     | 
| 
       15 
     | 
    
         
            -
            0PxiA7wq+QWnv4EM+3aGShxwyVlmgJZyyBfJtAMr1iDm4JsidTT5GMdfxRICPGZY
         
     | 
| 
       16 
     | 
    
         
            -
            WVggcz/cVu39OxRrumREuTWAzwKBgQDEuGheZv68cYt5EkzOWxeFQyt1bzXn1CJg
         
     | 
| 
       17 
     | 
    
         
            -
            IXnIFZIekJhVGpBG+zMAYri9+hSheiDrwfIcSfTq9LxF6JNUvaU4qMrkwvW21jKs
         
     | 
| 
       18 
     | 
    
         
            -
            n7ofcA+VYq2mggoIuuvKVqXemLHorC0U/zCMnM6rycaa9sB5tsF+Js93uvf1TEJt
         
     | 
| 
       19 
     | 
    
         
            -
            veV0yCeM2QKBgF1M0iAoe7SDyXuCyMEMxN5ee4NvmGwjIz/IGR+Aahm6hziE4Y8F
         
     | 
| 
       20 
     | 
    
         
            -
            lL2LsujefvPU8FzmWG5Rgy1Y/YiXLxrAmvrXkE9oEOJL4TVoK7w3Z9P1Waqedy+H
         
     | 
| 
       21 
     | 
    
         
            -
            M9bxnHlKNAXtMRWbU/fATko+XBwu1pJ/CXjSY5A5gbO6W/X0ozLFFf6lAoGABRZ7
         
     | 
| 
       22 
     | 
    
         
            -
            5I0nY3pQUCZQBDpI5nJxSk1BCKjs5q2W97zPFalJt1HDj4JptEXZX1h7dh2xgkd2
         
     | 
| 
       23 
     | 
    
         
            -
            2pJzGiyQPgKg5N0uy8NZ1AbS0hLCJsLOzodYb9Wohhjw537mIEqTaalrWIgzdkqP
         
     | 
| 
       24 
     | 
    
         
            -
            V+OqWLkUQOfG3J8EbB3W2dLlHNwHD82MhLO0iikCgYEAvdK5LmpUdZXMVtiOMZO5
         
     | 
| 
       25 
     | 
    
         
            -
            t3M0vwi6vPhW7DV1QET51x/U+SyH4rvZGeqRl+gcKrZ8SreOlyICvsPgVmvLCrHE
         
     | 
| 
       26 
     | 
    
         
            -
            gJLPWJIzI8Mg6u91/KpiVmRahnJjOn3oHNuLSqFjn9lIhmA5dN7zQDXzPdYrWPNR
         
     | 
| 
       27 
     | 
    
         
            -
            u1QX+JLhlP33ejgdkdLsNiM=
         
     | 
| 
       28 
     | 
    
         
            -
            -----END PRIVATE KEY-----
         
     | 
| 
         @@ -1,26 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            -----BEGIN CERTIFICATE-----
         
     | 
| 
       2 
     | 
    
         
            -
            MIIEXDCCA0SgAwIBAgIJAIgFm03l5AJkMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNV
         
     | 
| 
       3 
     | 
    
         
            -
            BAYTAlhYMRIwEAYDVQQIEwlVbnRydXN0ZWQxEjAQBgNVBAcTCUV2aWx2aWxsZTEU
         
     | 
| 
       4 
     | 
    
         
            -
            MBIGA1UEChMLRXZpbCBIYWNrZXIxGjAYBgNVBAsTEUF0dGFjayBEZXBhcnRtZW50
         
     | 
| 
       5 
     | 
    
         
            -
            MRIwEAYDVQQDEwkxMjcuMC4wLjEwIBcNMTYwNDAyMDMzNDUxWhgPMjA1MDA2MjMw
         
     | 
| 
       6 
     | 
    
         
            -
            MzM0NTFaMHsxCzAJBgNVBAYTAlhYMRIwEAYDVQQIEwlVbnRydXN0ZWQxEjAQBgNV
         
     | 
| 
       7 
     | 
    
         
            -
            BAcTCUV2aWx2aWxsZTEUMBIGA1UEChMLRXZpbCBIYWNrZXIxGjAYBgNVBAsTEUF0
         
     | 
| 
       8 
     | 
    
         
            -
            dGFjayBEZXBhcnRtZW50MRIwEAYDVQQDEwkxMjcuMC4wLjEwggEiMA0GCSqGSIb3
         
     | 
| 
       9 
     | 
    
         
            -
            DQEBAQUAA4IBDwAwggEKAoIBAQCtXxcEGUrGqAqlBK94B8IwSkB8OnLYC/c/6Tde
         
     | 
| 
       10 
     | 
    
         
            -
            WG46pzmZWZvffi0akcKKubRNcfoavOuqLuNnpQDkIlnJ37K/LZk8Q5+aMoUGBiQ2
         
     | 
| 
       11 
     | 
    
         
            -
            jSN1707sFqH3eTFvXOUzlDEcsBa7Y7RuaI8SXg1UGsnnCcj6H3BW2xKcXPN6/s30
         
     | 
| 
       12 
     | 
    
         
            -
            vhNw2CPqtXm4NOD3Zb5FkB9epAEejRg0OPn5DJ3mESVp/H2EqkptMZ+6cOk2/CMc
         
     | 
| 
       13 
     | 
    
         
            -
            e8AAfcxBGwKuOMXNODszTNxN+OuGCHOxx8+vR/eV35tonISwbkmO9WI6DC+pWT2s
         
     | 
| 
       14 
     | 
    
         
            -
            PvDhuQtqsrVofCP/pireb5Ce/7bP/FsZcNSMMfV5dponcYrrAgMBAAGjgeAwgd0w
         
     | 
| 
       15 
     | 
    
         
            -
            HQYDVR0OBBYEFLeDNvKpJKmuyPsamax2AZTijdkwMIGtBgNVHSMEgaUwgaKAFLeD
         
     | 
| 
       16 
     | 
    
         
            -
            NvKpJKmuyPsamax2AZTijdkwoX+kfTB7MQswCQYDVQQGEwJYWDESMBAGA1UECBMJ
         
     | 
| 
       17 
     | 
    
         
            -
            VW50cnVzdGVkMRIwEAYDVQQHEwlFdmlsdmlsbGUxFDASBgNVBAoTC0V2aWwgSGFj
         
     | 
| 
       18 
     | 
    
         
            -
            a2VyMRowGAYDVQQLExFBdHRhY2sgRGVwYXJ0bWVudDESMBAGA1UEAxMJMTI3LjAu
         
     | 
| 
       19 
     | 
    
         
            -
            MC4xggkAiAWbTeXkAmQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEA
         
     | 
| 
       20 
     | 
    
         
            -
            FWYTrxi/h7PYIpp09QsbDiGdC7gmp04HTx82NvBaUFaLk8ygz4DUz5u7QyTDdAga
         
     | 
| 
       21 
     | 
    
         
            -
            yWviHghuyZ6vv5Ubaj7XLOzLM6rYsQjkVq5ltwP+9V/U/b5jOHvZdYqdatVXUXxR
         
     | 
| 
       22 
     | 
    
         
            -
            SO+e3QYiMpM4Vs/NNXhpUp6apD7VcoB2LgK3vGDJ526PBJjgw24311t8O7kDTwkt
         
     | 
| 
       23 
     | 
    
         
            -
            AwX56/KTolMI+k9rT8Ee6aucT6gBNf0judhNkPVo+6CYgjmEVRrN/xaFCUNSpv5E
         
     | 
| 
       24 
     | 
    
         
            -
            O6uIcxSSX6a5iOZ/EH+GyHb6kDmztn/Hes+UN9+gMuAK7+LgsD2mYbxn9Pnaerrs
         
     | 
| 
       25 
     | 
    
         
            -
            2nER8XurylLxi0GLvNWNdQ==
         
     | 
| 
       26 
     | 
    
         
            -
            -----END CERTIFICATE-----
         
     | 
| 
         @@ -1,27 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            -----BEGIN RSA PRIVATE KEY-----
         
     | 
| 
       2 
     | 
    
         
            -
            MIIEpAIBAAKCAQEArV8XBBlKxqgKpQSveAfCMEpAfDpy2Av3P+k3XlhuOqc5mVmb
         
     | 
| 
       3 
     | 
    
         
            -
            334tGpHCirm0TXH6Grzrqi7jZ6UA5CJZyd+yvy2ZPEOfmjKFBgYkNo0jde9O7Bah
         
     | 
| 
       4 
     | 
    
         
            -
            93kxb1zlM5QxHLAWu2O0bmiPEl4NVBrJ5wnI+h9wVtsSnFzzev7N9L4TcNgj6rV5
         
     | 
| 
       5 
     | 
    
         
            -
            uDTg92W+RZAfXqQBHo0YNDj5+Qyd5hElafx9hKpKbTGfunDpNvwjHHvAAH3MQRsC
         
     | 
| 
       6 
     | 
    
         
            -
            rjjFzTg7M0zcTfjrhghzscfPr0f3ld+baJyEsG5JjvViOgwvqVk9rD7w4bkLarK1
         
     | 
| 
       7 
     | 
    
         
            -
            aHwj/6Yq3m+Qnv+2z/xbGXDUjDH1eXaaJ3GK6wIDAQABAoIBAQCeC0QxAVlwNTnW
         
     | 
| 
       8 
     | 
    
         
            -
            6qmGsxPr75RPavzMREQ1p8VIpTZ/E3hneg+lMiGtydhdnCJoQxGrFDOFJU86aWmh
         
     | 
| 
       9 
     | 
    
         
            -
            jkrpw5nvu4KoNEEnUQyAzFJwxELiPLBmec9WiM1u5nEujtYif8eJNcACsiBSrxhZ
         
     | 
| 
       10 
     | 
    
         
            -
            Zj5N9laW5NgE5ZpWnkl7AxL/G9MfFvifr9KtyDcs+wnYD6ffz/bRwS54veMccj/q
         
     | 
| 
       11 
     | 
    
         
            -
            SkVQRL7FM4NJczG0TTp+LT/1R3s8YVv9GHnJ6K7Gol3E0PbFS1HztDuMVonhWiac
         
     | 
| 
       12 
     | 
    
         
            -
            9Rjt7w0rNgeH6ZbCMXrUd+8I8amazA78p1ky0Mh8d6UUVFU1jjtyxlgDh06IPsnE
         
     | 
| 
       13 
     | 
    
         
            -
            +exeAClxAoGBAOMZ7LEFr3VcFwym7RvgckeQhd6Rmz8Bh7kGfB9pDsHFprGJ0rm4
         
     | 
| 
       14 
     | 
    
         
            -
            XgNETJXOky5wUCPZmMBN1iAU/ehyyXqPykXiKjAQLxQNHR9/Z6P58PsHs2Uw8VZa
         
     | 
| 
       15 
     | 
    
         
            -
            XdZwlBME5+/yl5DiirO5rCt804DdCQgSu7denudwWbbtzAsodSKj5zEJAoGBAMNu
         
     | 
| 
       16 
     | 
    
         
            -
            21hZnsvhtZlvQVHZ4sQttrv9e5VpWWHkDPRN3sdLZPfK/+3L0BmUrGotgNWpTZwR
         
     | 
| 
       17 
     | 
    
         
            -
            8YvKRT2Xn1unzpKlkHtIVuHU7khOj+tYHLIx3rezVanw9QzbIANMel6STlUr3jwX
         
     | 
| 
       18 
     | 
    
         
            -
            fjnibgkJixxHTOBs8/zm219Q1sNTos9GUOAZQb1TAoGALwGFsVpo59TI3JCMkXGS
         
     | 
| 
       19 
     | 
    
         
            -
            led/HgNra84oRo7mECZRrJ/5kdPiLxjPNMPlSji41CrhG5qFeIBj6r4NlBh2RY0P
         
     | 
| 
       20 
     | 
    
         
            -
            pAldDBe9dtwEBCn9zL4GOB9u7WoE+ge4VpN0wr8INu0ynAWYCf1LerDaolid7vLZ
         
     | 
| 
       21 
     | 
    
         
            -
            sem+4E6r8yYjTsfv/tyIFOkCgYEAlCZobxxZLbNn5+2X9cWXiyIgYXgyBDy9fmDT
         
     | 
| 
       22 
     | 
    
         
            -
            lSum0yuLWfDwfELB+XJkFYVzIgVbCRHtKwxl2uAi9OdLyI1r7pkTC9VP4U50+XJt
         
     | 
| 
       23 
     | 
    
         
            -
            JoR5koaHTPGVwm4mYXnLVf/RE+3SZXllvdmxknZCl2hRldviRfh3mlT8yUuQo1Jp
         
     | 
| 
       24 
     | 
    
         
            -
            oshitnMCgYAXTQLA7B5YLmhCG8HRM/h/xM55ObdDX1SIWUbk3p1uxak1W0abfvpi
         
     | 
| 
       25 
     | 
    
         
            -
            FPBy2riOdSDA6Uv7V8y1j4tENGVMyyMsEpFdLDX4Lkbh9niOoPeHCWdO0boPk0Fw
         
     | 
| 
       26 
     | 
    
         
            -
            aPXtT7gdTPWJulKOxtLuGqBjZZ77TO49uqWlEMaerulWyjhRm8zzvA==
         
     | 
| 
       27 
     | 
    
         
            -
            -----END RSA PRIVATE KEY-----
         
     | 
| 
         @@ -1,82 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            Certificate:
         
     | 
| 
       2 
     | 
    
         
            -
                Data:
         
     | 
| 
       3 
     | 
    
         
            -
                    Version: 3 (0x2)
         
     | 
| 
       4 
     | 
    
         
            -
                    Serial Number: 9801410922913464933 (0x88059b4de5e40265)
         
     | 
| 
       5 
     | 
    
         
            -
                Signature Algorithm: sha1WithRSAEncryption
         
     | 
| 
       6 
     | 
    
         
            -
                    Issuer: C=XX, ST=Untrusted, L=Evilville, O=Evil Hacker, OU=Attack Department, CN=127.0.0.1
         
     | 
| 
       7 
     | 
    
         
            -
                    Validity
         
     | 
| 
       8 
     | 
    
         
            -
                        Not Before: Apr  2 03:34:51 2016 GMT
         
     | 
| 
       9 
     | 
    
         
            -
                        Not After : Jun 23 03:34:51 2050 GMT
         
     | 
| 
       10 
     | 
    
         
            -
                    Subject: C=XX, ST=Untrusted, O=Evil Hacker, OU=Attack Department, CN=127.0.0.1
         
     | 
| 
       11 
     | 
    
         
            -
                    Subject Public Key Info:
         
     | 
| 
       12 
     | 
    
         
            -
                        Public Key Algorithm: rsaEncryption
         
     | 
| 
       13 
     | 
    
         
            -
                            Public-Key: (2048 bit)
         
     | 
| 
       14 
     | 
    
         
            -
                            Modulus:
         
     | 
| 
       15 
     | 
    
         
            -
                                00:9a:73:e7:45:fc:d3:b5:4a:bd:bd:ad:30:e5:24:
         
     | 
| 
       16 
     | 
    
         
            -
                                74:38:01:89:8f:a9:90:bf:3c:4a:bf:d1:f1:5e:db:
         
     | 
| 
       17 
     | 
    
         
            -
                                c8:aa:26:59:e6:ec:b3:a0:0f:4d:74:59:dd:c9:27:
         
     | 
| 
       18 
     | 
    
         
            -
                                2f:e1:48:7d:30:d9:59:06:2f:29:f0:d1:25:33:79:
         
     | 
| 
       19 
     | 
    
         
            -
                                5f:58:9d:d7:54:c8:a7:aa:1a:84:00:a2:85:63:32:
         
     | 
| 
       20 
     | 
    
         
            -
                                cc:ef:73:7d:b0:26:c6:95:f1:86:16:68:38:63:57:
         
     | 
| 
       21 
     | 
    
         
            -
                                09:0d:6f:6a:70:e8:75:3b:72:b4:b1:4d:01:0e:01:
         
     | 
| 
       22 
     | 
    
         
            -
                                0e:bf:bf:6a:8c:88:fe:0d:cb:88:43:1b:da:ed:0c:
         
     | 
| 
       23 
     | 
    
         
            -
                                88:25:33:f7:b9:b1:fc:32:b8:94:c9:20:7c:ac:49:
         
     | 
| 
       24 
     | 
    
         
            -
                                e4:c1:58:93:69:0e:41:e3:df:96:e3:47:11:14:8c:
         
     | 
| 
       25 
     | 
    
         
            -
                                e4:4b:b6:56:df:6f:5e:d2:48:dc:a1:8a:98:cc:4b:
         
     | 
| 
       26 
     | 
    
         
            -
                                02:89:95:ea:f6:de:a5:3a:9c:06:7c:f0:7c:09:6f:
         
     | 
| 
       27 
     | 
    
         
            -
                                27:11:f2:b1:1b:47:6b:a3:ea:d6:ee:a1:65:91:84:
         
     | 
| 
       28 
     | 
    
         
            -
                                cf:2e:81:d3:55:4a:e8:01:4e:72:41:ac:92:e0:7d:
         
     | 
| 
       29 
     | 
    
         
            -
                                7c:fe:85:f0:2e:f1:ee:4a:80:f9:4e:5a:b4:95:6c:
         
     | 
| 
       30 
     | 
    
         
            -
                                bb:fe:ff:46:58:4a:7b:fc:a0:63:59:5d:01:5b:63:
         
     | 
| 
       31 
     | 
    
         
            -
                                06:5c:94:83:30:27:81:f0:1a:13:89:5a:5a:a2:e2:
         
     | 
| 
       32 
     | 
    
         
            -
                                0f:eb
         
     | 
| 
       33 
     | 
    
         
            -
                            Exponent: 65537 (0x10001)
         
     | 
| 
       34 
     | 
    
         
            -
                    X509v3 extensions:
         
     | 
| 
       35 
     | 
    
         
            -
                        X509v3 Basic Constraints: 
         
     | 
| 
       36 
     | 
    
         
            -
                            CA:FALSE
         
     | 
| 
       37 
     | 
    
         
            -
                        Netscape Comment: 
         
     | 
| 
       38 
     | 
    
         
            -
                            OpenSSL Generated Certificate
         
     | 
| 
       39 
     | 
    
         
            -
                        X509v3 Subject Key Identifier: 
         
     | 
| 
       40 
     | 
    
         
            -
                            1B:71:91:99:43:12:0F:D3:59:FC:00:EF:99:F3:42:CF:41:FD:40:1D
         
     | 
| 
       41 
     | 
    
         
            -
                        X509v3 Authority Key Identifier: 
         
     | 
| 
       42 
     | 
    
         
            -
                            keyid:B7:83:36:F2:A9:24:A9:AE:C8:FB:1A:99:AC:76:01:94:E2:8D:D9:30
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                Signature Algorithm: sha1WithRSAEncryption
         
     | 
| 
       45 
     | 
    
         
            -
                     a4:cd:88:c3:19:b7:cd:7e:7a:e7:85:1f:fb:3e:31:0b:ff:9d:
         
     | 
| 
       46 
     | 
    
         
            -
                     6f:b1:a2:72:56:4a:b1:ec:6c:f3:99:bd:65:08:0a:e9:47:1d:
         
     | 
| 
       47 
     | 
    
         
            -
                     79:55:5b:29:b1:d4:85:69:85:65:3f:30:37:a1:0e:76:d2:1f:
         
     | 
| 
       48 
     | 
    
         
            -
                     b0:76:2a:23:75:c9:05:a4:89:cf:c1:68:42:16:46:d6:c9:a8:
         
     | 
| 
       49 
     | 
    
         
            -
                     e5:06:5b:52:45:d4:41:5d:f3:c7:00:d1:ca:cc:3e:4c:63:e6:
         
     | 
| 
       50 
     | 
    
         
            -
                     7a:fe:ce:20:a4:df:e3:7c:e3:75:6e:f7:18:84:1c:9b:56:ce:
         
     | 
| 
       51 
     | 
    
         
            -
                     55:fb:04:b9:de:11:6e:7d:5d:47:de:a9:ed:3e:79:48:a5:4f:
         
     | 
| 
       52 
     | 
    
         
            -
                     32:d5:96:8d:ea:e2:a6:8a:c2:e9:f5:b0:8d:da:ef:71:96:60:
         
     | 
| 
       53 
     | 
    
         
            -
                     b0:7e:c3:3d:e9:37:91:27:bf:ae:5c:e8:c0:9a:6f:c8:38:62:
         
     | 
| 
       54 
     | 
    
         
            -
                     90:d0:49:c1:7f:28:13:da:29:bb:5b:d1:72:6f:23:7c:a0:87:
         
     | 
| 
       55 
     | 
    
         
            -
                     44:96:47:53:0e:0d:1d:74:d9:26:6b:b3:01:24:9c:5e:c8:f4:
         
     | 
| 
       56 
     | 
    
         
            -
                     11:fe:35:14:6c:ec:e7:42:5f:32:56:f0:9d:8d:11:02:21:07:
         
     | 
| 
       57 
     | 
    
         
            -
                     cc:ce:7b:f0:e9:bc:83:c8:93:b0:8c:a7:e9:b1:c2:12:6b:30:
         
     | 
| 
       58 
     | 
    
         
            -
                     2b:75:dc:61:b8:d4:87:6b:07:2d:75:b0:7a:18:6e:19:7f:04:
         
     | 
| 
       59 
     | 
    
         
            -
                     78:c6:c7:b7
         
     | 
| 
       60 
     | 
    
         
            -
            -----BEGIN CERTIFICATE-----
         
     | 
| 
       61 
     | 
    
         
            -
            MIID4jCCAsqgAwIBAgIJAIgFm03l5AJlMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNV
         
     | 
| 
       62 
     | 
    
         
            -
            BAYTAlhYMRIwEAYDVQQIEwlVbnRydXN0ZWQxEjAQBgNVBAcTCUV2aWx2aWxsZTEU
         
     | 
| 
       63 
     | 
    
         
            -
            MBIGA1UEChMLRXZpbCBIYWNrZXIxGjAYBgNVBAsTEUF0dGFjayBEZXBhcnRtZW50
         
     | 
| 
       64 
     | 
    
         
            -
            MRIwEAYDVQQDEwkxMjcuMC4wLjEwIBcNMTYwNDAyMDMzNDUxWhgPMjA1MDA2MjMw
         
     | 
| 
       65 
     | 
    
         
            -
            MzM0NTFaMGcxCzAJBgNVBAYTAlhYMRIwEAYDVQQIEwlVbnRydXN0ZWQxFDASBgNV
         
     | 
| 
       66 
     | 
    
         
            -
            BAoTC0V2aWwgSGFja2VyMRowGAYDVQQLExFBdHRhY2sgRGVwYXJ0bWVudDESMBAG
         
     | 
| 
       67 
     | 
    
         
            -
            A1UEAxMJMTI3LjAuMC4xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
         
     | 
| 
       68 
     | 
    
         
            -
            mnPnRfzTtUq9va0w5SR0OAGJj6mQvzxKv9HxXtvIqiZZ5uyzoA9NdFndyScv4Uh9
         
     | 
| 
       69 
     | 
    
         
            -
            MNlZBi8p8NElM3lfWJ3XVMinqhqEAKKFYzLM73N9sCbGlfGGFmg4Y1cJDW9qcOh1
         
     | 
| 
       70 
     | 
    
         
            -
            O3K0sU0BDgEOv79qjIj+DcuIQxva7QyIJTP3ubH8MriUySB8rEnkwViTaQ5B49+W
         
     | 
| 
       71 
     | 
    
         
            -
            40cRFIzkS7ZW329e0kjcoYqYzEsCiZXq9t6lOpwGfPB8CW8nEfKxG0dro+rW7qFl
         
     | 
| 
       72 
     | 
    
         
            -
            kYTPLoHTVUroAU5yQayS4H18/oXwLvHuSoD5Tlq0lWy7/v9GWEp7/KBjWV0BW2MG
         
     | 
| 
       73 
     | 
    
         
            -
            XJSDMCeB8BoTiVpaouIP6wIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIB
         
     | 
| 
       74 
     | 
    
         
            -
            DQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUG3GR
         
     | 
| 
       75 
     | 
    
         
            -
            mUMSD9NZ/ADvmfNCz0H9QB0wHwYDVR0jBBgwFoAUt4M28qkkqa7I+xqZrHYBlOKN
         
     | 
| 
       76 
     | 
    
         
            -
            2TAwDQYJKoZIhvcNAQEFBQADggEBAKTNiMMZt81+eueFH/s+MQv/nW+xonJWSrHs
         
     | 
| 
       77 
     | 
    
         
            -
            bPOZvWUICulHHXlVWymx1IVphWU/MDehDnbSH7B2KiN1yQWkic/BaEIWRtbJqOUG
         
     | 
| 
       78 
     | 
    
         
            -
            W1JF1EFd88cA0crMPkxj5nr+ziCk3+N843Vu9xiEHJtWzlX7BLneEW59XUfeqe0+
         
     | 
| 
       79 
     | 
    
         
            -
            eUilTzLVlo3q4qaKwun1sI3a73GWYLB+wz3pN5Env65c6MCab8g4YpDQScF/KBPa
         
     | 
| 
       80 
     | 
    
         
            -
            Kbtb0XJvI3ygh0SWR1MODR102SZrswEknF7I9BH+NRRs7OdCXzJW8J2NEQIhB8zO
         
     | 
| 
       81 
     | 
    
         
            -
            e/DpvIPIk7CMp+mxwhJrMCt13GG41IdrBy11sHoYbhl/BHjGx7c=
         
     | 
| 
       82 
     | 
    
         
            -
            -----END CERTIFICATE-----
         
     | 
| 
         @@ -1,28 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            -----BEGIN PRIVATE KEY-----
         
     | 
| 
       2 
     | 
    
         
            -
            MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCac+dF/NO1Sr29
         
     | 
| 
       3 
     | 
    
         
            -
            rTDlJHQ4AYmPqZC/PEq/0fFe28iqJlnm7LOgD010Wd3JJy/hSH0w2VkGLynw0SUz
         
     | 
| 
       4 
     | 
    
         
            -
            eV9YnddUyKeqGoQAooVjMszvc32wJsaV8YYWaDhjVwkNb2pw6HU7crSxTQEOAQ6/
         
     | 
| 
       5 
     | 
    
         
            -
            v2qMiP4Ny4hDG9rtDIglM/e5sfwyuJTJIHysSeTBWJNpDkHj35bjRxEUjORLtlbf
         
     | 
| 
       6 
     | 
    
         
            -
            b17SSNyhipjMSwKJler23qU6nAZ88HwJbycR8rEbR2uj6tbuoWWRhM8ugdNVSugB
         
     | 
| 
       7 
     | 
    
         
            -
            TnJBrJLgfXz+hfAu8e5KgPlOWrSVbLv+/0ZYSnv8oGNZXQFbYwZclIMwJ4HwGhOJ
         
     | 
| 
       8 
     | 
    
         
            -
            Wlqi4g/rAgMBAAECggEAPX3fmfGqqAb1u8p0KQZ2bsXN6rBrvHdYmz4OhuGh5nwW
         
     | 
| 
       9 
     | 
    
         
            -
            VuXuLc9p2uTcc/VyDpM5pHUkCF5GqGXcFb5Aw5sz28F3XzXnUAlkabYT+VFVvQfz
         
     | 
| 
       10 
     | 
    
         
            -
            EEd0Rv9/U62XIQ42pnUmF2D3p48s2FJ7eMPQu9reqsdZnL4+TxoqKgWinv/JlLdh
         
     | 
| 
       11 
     | 
    
         
            -
            zBxjgVgaDMsvVc4cuuT6bcI3DUe2F9ALBKfaCxZoOUSsmgieuXog00Bzv0NmZoUD
         
     | 
| 
       12 
     | 
    
         
            -
            WsAX0syzUlwjVmCr8J4I0IByYAbn1S/ozU141Z+H+VUyuEpYw0zDqDNrlmdYclc8
         
     | 
| 
       13 
     | 
    
         
            -
            neoq8Xj9Cx1zHdF5H3aT9SLUGxdHPJpED9wQNx2toQKBgQDJcgJEG39u3h3mW/At
         
     | 
| 
       14 
     | 
    
         
            -
            f8jl8evar5nUOOn5AIxVGFAWx4ZvoboxHSRlS6UkF0AImlH4L7xQESb9BMzOrObN
         
     | 
| 
       15 
     | 
    
         
            -
            PBNQrccH+fz1o1fHDhob7EvyMMwzmDCPpQnN/6KXRzapu2MDFvlMkEMITTN7J0En
         
     | 
| 
       16 
     | 
    
         
            -
            c9BOxo06Q4DKXGVCiWmbIwXihQKBgQDER/KfaWRZWOA2mQ26giJVjUX4+s1GeQM0
         
     | 
| 
       17 
     | 
    
         
            -
            V4AIo1KS6fDzh68RsAQpMTx/N8aHEcxf+2qGIOTCvFY3Nxqe5aw/Xiz47MPlYulM
         
     | 
| 
       18 
     | 
    
         
            -
            OecovSO96nidhyv2Zux+HpvI85tcWTyORi+RWho51gTOLth6BJ4uvSsaooWmO0Va
         
     | 
| 
       19 
     | 
    
         
            -
            GoIxKcaLrwKBgH/guuWHWy8DG5H3fRE1FFA8cc+iN5HMC2NBYNRIGddME+BblznE
         
     | 
| 
       20 
     | 
    
         
            -
            WS1ghtXRWJnddPmLPAzLxqdJ28W7ZsyUPWKy3i0HGfjJF1jKb/KX32JAbfC2xOT7
         
     | 
| 
       21 
     | 
    
         
            -
            DK1TgWBtGZtH1EPK2rkqvxLPB0Y/lhG4aF0Jl++LmH9dhf5mAr8zzXGNAoGBAKEi
         
     | 
| 
       22 
     | 
    
         
            -
            l7H66aDX76mi2LxmnR0yz2DpNKBINDNCKh/tRJrLZz3mA/k3URMoEow2E8tK90dM
         
     | 
| 
       23 
     | 
    
         
            -
            tVTLqEGeMAFAQaB02IVlIPJyHRgxrWkgl/6/15nP5ZkdISA1uqyHIElGhCK6N5Zt
         
     | 
| 
       24 
     | 
    
         
            -
            VBu1ppYYdvV1S85QADRKpBpHlgSz3+lqnbsSmqaNAoGAacA3XSIzTHj6+06VzEHN
         
     | 
| 
       25 
     | 
    
         
            -
            aO2LJbBxl6Eduj6eTEgcZBlQOX6cVvaleTAT2g2xM0aGMV4StmdijUdktjBQVLpH
         
     | 
| 
       26 
     | 
    
         
            -
            8PBTqlfVuLXEXQd+qWMpUJwEkh/pdmf9EPoLSfp3zQLaNI/kCg3jQtR4n6/68hfi
         
     | 
| 
       27 
     | 
    
         
            -
            5Q6L0mN+SoB+jRNPDSV7JWA=
         
     | 
| 
       28 
     | 
    
         
            -
            -----END PRIVATE KEY-----
         
     | 
| 
         @@ -1,24 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Wire < Fiber
         
     | 
| 
       2 
     | 
    
         
            -
              # We cannot run this fiber explicitly because EM schedules it. Resuming the
         
     | 
| 
       3 
     | 
    
         
            -
              # current fiber on the next tick to let the reactor do work.
         
     | 
| 
       4 
     | 
    
         
            -
              def self.pass
         
     | 
| 
       5 
     | 
    
         
            -
                f = Fiber.current
         
     | 
| 
       6 
     | 
    
         
            -
                EM.next_tick { f.resume }
         
     | 
| 
       7 
     | 
    
         
            -
                Fiber.yield
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              def self.sleep(sec)
         
     | 
| 
       11 
     | 
    
         
            -
                EM::Synchrony.sleep(sec)
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              def initialize(&blk)
         
     | 
| 
       15 
     | 
    
         
            -
                super
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                # Schedule run in next tick
         
     | 
| 
       18 
     | 
    
         
            -
                EM.next_tick { resume }
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              def join
         
     | 
| 
       22 
     | 
    
         
            -
                self.class.pass while alive?
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
            end
         
     | 
    
        data/test/support/wire/thread.rb
    DELETED
    
    
    
        data/test/synchrony_driver.rb
    DELETED
    
    | 
         @@ -1,85 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require "em-synchrony"
         
     | 
| 
       2 
     | 
    
         
            -
            require "em-synchrony/connection_pool"
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require_relative "../lib/redis"
         
     | 
| 
       5 
     | 
    
         
            -
            require_relative "../lib/redis/connection/synchrony"
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            PORT    = 6381
         
     | 
| 
       10 
     | 
    
         
            -
            OPTIONS = {:port => PORT, :db => 15}
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            #
         
     | 
| 
       13 
     | 
    
         
            -
            # if running under Eventmachine + Synchrony (Ruby 1.9+), then
         
     | 
| 
       14 
     | 
    
         
            -
            # we can simulate the blocking API while performing the network
         
     | 
| 
       15 
     | 
    
         
            -
            # IO via the EM reactor.
         
     | 
| 
       16 
     | 
    
         
            -
            #
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            EM.synchrony do
         
     | 
| 
       19 
     | 
    
         
            -
              r = Redis.new OPTIONS
         
     | 
| 
       20 
     | 
    
         
            -
              r.flushdb
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              r.rpush "foo", "s1"
         
     | 
| 
       23 
     | 
    
         
            -
              r.rpush "foo", "s2"
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              assert_equal 2, r.llen("foo")
         
     | 
| 
       26 
     | 
    
         
            -
              assert_equal "s2", r.rpop("foo")
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              r.set("foo", "bar")
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              assert_equal "bar", r.getset("foo", "baz")
         
     | 
| 
       31 
     | 
    
         
            -
              assert_equal "baz", r.get("foo")
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              r.set("foo", "a")
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              assert_equal 1, r.getbit("foo", 1)
         
     | 
| 
       36 
     | 
    
         
            -
              assert_equal 1, r.getbit("foo", 2)
         
     | 
| 
       37 
     | 
    
         
            -
              assert_equal 0, r.getbit("foo", 3)
         
     | 
| 
       38 
     | 
    
         
            -
              assert_equal 0, r.getbit("foo", 4)
         
     | 
| 
       39 
     | 
    
         
            -
              assert_equal 0, r.getbit("foo", 5)
         
     | 
| 
       40 
     | 
    
         
            -
              assert_equal 0, r.getbit("foo", 6)
         
     | 
| 
       41 
     | 
    
         
            -
              assert_equal 1, r.getbit("foo", 7)
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              r.flushdb
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              # command pipelining
         
     | 
| 
       46 
     | 
    
         
            -
              r.pipelined do
         
     | 
| 
       47 
     | 
    
         
            -
                r.lpush "foo", "s1"
         
     | 
| 
       48 
     | 
    
         
            -
                r.lpush "foo", "s2"
         
     | 
| 
       49 
     | 
    
         
            -
              end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              assert_equal 2, r.llen("foo")
         
     | 
| 
       52 
     | 
    
         
            -
              assert_equal "s2", r.lpop("foo")
         
     | 
| 
       53 
     | 
    
         
            -
              assert_equal "s1", r.lpop("foo")
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              assert_equal "OK", r._client.call(:quit)
         
     | 
| 
       56 
     | 
    
         
            -
              assert_equal "PONG", r.ping
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
              rpool = EM::Synchrony::ConnectionPool.new(size: 5) { Redis.new OPTIONS }
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
              result = rpool.watch 'foo' do |rd|
         
     | 
| 
       62 
     | 
    
         
            -
                assert_kind_of Redis, rd
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                rd.set "foo", "s1"
         
     | 
| 
       65 
     | 
    
         
            -
                rd.multi do |multi|
         
     | 
| 
       66 
     | 
    
         
            -
                  multi.set "foo", "s2"
         
     | 
| 
       67 
     | 
    
         
            -
                end
         
     | 
| 
       68 
     | 
    
         
            -
              end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
              assert_equal nil, result
         
     | 
| 
       71 
     | 
    
         
            -
              assert_equal "s1", rpool.get("foo")
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
              result = rpool.watch "foo" do |rd|
         
     | 
| 
       74 
     | 
    
         
            -
                assert_kind_of Redis, rd
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                rd.multi do |multi|
         
     | 
| 
       77 
     | 
    
         
            -
                  multi.set "foo", "s3"
         
     | 
| 
       78 
     | 
    
         
            -
                end
         
     | 
| 
       79 
     | 
    
         
            -
              end
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
              assert_equal ["OK"], result
         
     | 
| 
       82 
     | 
    
         
            -
              assert_equal "s3", rpool.get("foo")
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
              EM.stop
         
     | 
| 
       85 
     | 
    
         
            -
            end
         
     | 
    
        data/test/test.conf.erb
    DELETED
    
    
    
        data/test/thread_safety_test.rb
    DELETED
    
    | 
         @@ -1,60 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative "helper"
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class TestThreadSafety < Test::Unit::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              include Helper::Client
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              driver(:ruby, :hiredis) do
         
     | 
| 
       8 
     | 
    
         
            -
                def test_thread_safety
         
     | 
| 
       9 
     | 
    
         
            -
                  redis = Redis.new(OPTIONS)
         
     | 
| 
       10 
     | 
    
         
            -
                  redis.set "foo", 1
         
     | 
| 
       11 
     | 
    
         
            -
                  redis.set "bar", 2
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  sample = 100
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  t1 = Thread.new do
         
     | 
| 
       16 
     | 
    
         
            -
                    $foos = Array.new(sample) { redis.get "foo" }
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  t2 = Thread.new do
         
     | 
| 
       20 
     | 
    
         
            -
                    $bars = Array.new(sample) { redis.get "bar" }
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  t1.join
         
     | 
| 
       24 
     | 
    
         
            -
                  t2.join
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  assert_equal ["1"], $foos.uniq
         
     | 
| 
       27 
     | 
    
         
            -
                  assert_equal ["2"], $bars.uniq
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                def test_thread_safety_queue_commit
         
     | 
| 
       31 
     | 
    
         
            -
                  redis = Redis.new(OPTIONS)
         
     | 
| 
       32 
     | 
    
         
            -
                  redis.set "foo", 1
         
     | 
| 
       33 
     | 
    
         
            -
                  redis.set "bar", 2
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                  sample = 100
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                  t1 = Thread.new do
         
     | 
| 
       38 
     | 
    
         
            -
                    sample.times do
         
     | 
| 
       39 
     | 
    
         
            -
                      r.queue("get", "foo")
         
     | 
| 
       40 
     | 
    
         
            -
                    end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                    $foos = r.commit
         
     | 
| 
       43 
     | 
    
         
            -
                  end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                  t2 = Thread.new do
         
     | 
| 
       46 
     | 
    
         
            -
                    sample.times do
         
     | 
| 
       47 
     | 
    
         
            -
                      r.queue("get", "bar")
         
     | 
| 
       48 
     | 
    
         
            -
                    end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                    $bars = r.commit
         
     | 
| 
       51 
     | 
    
         
            -
                  end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                  t1.join
         
     | 
| 
       54 
     | 
    
         
            -
                  t2.join
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                  assert_equal ["1"], $foos.uniq
         
     | 
| 
       57 
     | 
    
         
            -
                  assert_equal ["2"], $bars.uniq
         
     | 
| 
       58 
     | 
    
         
            -
                end
         
     | 
| 
       59 
     | 
    
         
            -
              end
         
     | 
| 
       60 
     | 
    
         
            -
            end
         
     |