mosquitto 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/.travis.yml +29 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +25 -0
- data/LICENSE.md +13 -0
- data/README.md +244 -0
- data/Rakefile +42 -0
- data/TODO.md +19 -0
- data/examples/pub_sub.rb +41 -0
- data/ext/mosquitto/client.c +2163 -0
- data/ext/mosquitto/client.h +145 -0
- data/ext/mosquitto/extconf.rb +31 -0
- data/ext/mosquitto/message.c +168 -0
- data/ext/mosquitto/message.h +16 -0
- data/ext/mosquitto/mosquitto_ext.c +88 -0
- data/ext/mosquitto/mosquitto_ext.h +35 -0
- data/ext/mosquitto/mosquitto_prelude.h +26 -0
- data/ext/mosquitto/rubinius.h +6 -0
- data/ext/mosquitto/ruby18.h +6 -0
- data/ext/mosquitto/ruby19.h +9 -0
- data/ext/mosquitto/ruby2.h +6 -0
- data/lib/mosquitto.rb +11 -0
- data/lib/mosquitto/client.rb +8 -0
- data/lib/mosquitto/logging.rb +32 -0
- data/lib/mosquitto/version.rb +5 -0
- data/mosquitto.gemspec +23 -0
- data/test/helper.rb +59 -0
- data/test/ssl/all-ca.crt +75 -0
- data/test/ssl/client-expired.crt +61 -0
- data/test/ssl/client-revoked.crt +61 -0
- data/test/ssl/client-revoked.csr +12 -0
- data/test/ssl/client-revoked.key +15 -0
- data/test/ssl/client.crt +61 -0
- data/test/ssl/client.csr +12 -0
- data/test/ssl/client.key +15 -0
- data/test/ssl/crl.pem +10 -0
- data/test/ssl/demoCA/crlnumber +1 -0
- data/test/ssl/demoCA/index.txt +1 -0
- data/test/ssl/demoCA/index.txt.attr +1 -0
- data/test/ssl/demoCA/serial +1 -0
- data/test/ssl/gen.sh +70 -0
- data/test/ssl/mosquitto.org.crt +18 -0
- data/test/ssl/openssl.cnf +406 -0
- data/test/ssl/readme.txt +2 -0
- data/test/ssl/rootCA/crlnumber +1 -0
- data/test/ssl/rootCA/index.txt +2 -0
- data/test/ssl/rootCA/index.txt.attr +1 -0
- data/test/ssl/rootCA/serial +1 -0
- data/test/ssl/server-expired.crt +0 -0
- data/test/ssl/server.crt +60 -0
- data/test/ssl/server.csr +12 -0
- data/test/ssl/server.key +15 -0
- data/test/ssl/signingCA/crlnumber +1 -0
- data/test/ssl/signingCA/index.txt +4 -0
- data/test/ssl/signingCA/index.txt.attr +1 -0
- data/test/ssl/signingCA/serial +1 -0
- data/test/ssl/test-alt-ca.crt +58 -0
- data/test/ssl/test-alt-ca.key +15 -0
- data/test/ssl/test-bad-root-ca.crt +17 -0
- data/test/ssl/test-bad-root-ca.key +15 -0
- data/test/ssl/test-ca.srl +1 -0
- data/test/ssl/test-fake-root-ca.crt +17 -0
- data/test/ssl/test-fake-root-ca.key +15 -0
- data/test/ssl/test-root-ca.crt +17 -0
- data/test/ssl/test-root-ca.key +15 -0
- data/test/ssl/test-signing-ca.crt +58 -0
- data/test/ssl/test-signing-ca.key +15 -0
- data/test/test_callbacks.rb +93 -0
- data/test/test_client.rb +141 -0
- data/test/test_custom_logger.rb +30 -0
- data/test/test_integration.rb +572 -0
- data/test/test_loops.rb +56 -0
- data/test/test_mosquitto.rb +28 -0
- data/test/test_pub_sub.rb +51 -0
- data/test/test_threads.rb +69 -0
- data/test/test_tls.rb +67 -0
- metadata +203 -0
data/test/ssl/readme.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
01
|
@@ -0,0 +1 @@
|
|
1
|
+
unique_subject = yes
|
@@ -0,0 +1 @@
|
|
1
|
+
03
|
File without changes
|
data/test/ssl/server.crt
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 1 (0x1)
|
5
|
+
Signature Algorithm: sha1WithRSAEncryption
|
6
|
+
Issuer: C=GB, ST=Derbyshire, O=Mosquitto Project, OU=Testing, CN=Signing CA
|
7
|
+
Validity
|
8
|
+
Not Before: Aug 30 22:03:29 2013 GMT
|
9
|
+
Not After : Aug 29 22:03:29 2018 GMT
|
10
|
+
Subject: C=GB, ST=Nottinghamshire, L=Nottingham, O=Server, OU=Production, CN=localhost
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
Public-Key: (1024 bit)
|
14
|
+
Modulus:
|
15
|
+
00:ab:8d:98:97:5f:97:fa:82:fa:56:01:6d:f1:6e:
|
16
|
+
ab:ef:47:a6:24:6c:1f:f1:9a:e5:80:0d:58:71:2f:
|
17
|
+
be:08:25:87:81:12:0b:a2:aa:ea:19:ee:75:8c:66:
|
18
|
+
88:5b:35:ac:79:a6:ff:e4:e0:1b:97:19:da:8d:28:
|
19
|
+
50:57:71:c1:ff:44:bb:be:4f:e7:e8:e7:54:bf:14:
|
20
|
+
cf:12:91:b1:0d:24:9b:24:1c:84:36:a8:99:9e:1e:
|
21
|
+
87:18:19:f1:83:c8:ae:fd:a2:af:5e:29:ba:ac:ac:
|
22
|
+
5b:56:1c:1c:0d:64:c3:80:d1:4c:c5:21:a8:6e:b8:
|
23
|
+
b2:f3:03:7a:1b:35:e3:9f:0f
|
24
|
+
Exponent: 65537 (0x10001)
|
25
|
+
X509v3 extensions:
|
26
|
+
X509v3 Basic Constraints:
|
27
|
+
CA:FALSE
|
28
|
+
Netscape Comment:
|
29
|
+
OpenSSL Generated Certificate
|
30
|
+
X509v3 Subject Key Identifier:
|
31
|
+
07:C5:AF:95:28:37:45:F4:2C:F5:BA:6A:60:79:DC:0F:A2:46:99:72
|
32
|
+
X509v3 Authority Key Identifier:
|
33
|
+
keyid:40:43:50:14:D1:63:7E:0B:7C:97:14:20:63:E5:8A:95:96:9F:D4:AB
|
34
|
+
|
35
|
+
Signature Algorithm: sha1WithRSAEncryption
|
36
|
+
90:dd:85:cb:9f:4a:89:78:2b:26:c4:82:b9:34:ea:39:5a:8b:
|
37
|
+
d9:3b:56:5c:78:df:69:ab:4a:f7:c6:10:8a:a3:9a:1a:5d:c5:
|
38
|
+
be:55:a1:36:df:36:d6:ea:3a:ec:be:99:38:9f:34:19:50:c4:
|
39
|
+
30:6a:18:2a:42:9f:45:a0:d2:57:bf:37:47:b7:2c:b0:1e:f4:
|
40
|
+
2e:95:1a:9a:90:2d:41:95:00:e8:23:3c:c1:99:ea:39:56:b1:
|
41
|
+
ea:8f:2d:db:e9:2c:ea:c8:5b:e7:90:8e:98:2e:ff:13:aa:73:
|
42
|
+
c2:da:fa:af:ee:aa:86:b6:1d:dc:91:4e:24:df:19:4d:aa:3f:
|
43
|
+
1b:d7
|
44
|
+
-----BEGIN CERTIFICATE-----
|
45
|
+
MIICzDCCAjWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJHQjET
|
46
|
+
MBEGA1UECAwKRGVyYnlzaGlyZTEaMBgGA1UECgwRTW9zcXVpdHRvIFByb2plY3Qx
|
47
|
+
EDAOBgNVBAsMB1Rlc3RpbmcxEzARBgNVBAMMClNpZ25pbmcgQ0EwHhcNMTMwODMw
|
48
|
+
MjIwMzI5WhcNMTgwODI5MjIwMzI5WjB2MQswCQYDVQQGEwJHQjEYMBYGA1UECAwP
|
49
|
+
Tm90dGluZ2hhbXNoaXJlMRMwEQYDVQQHDApOb3R0aW5naGFtMQ8wDQYDVQQKDAZT
|
50
|
+
ZXJ2ZXIxEzARBgNVBAsMClByb2R1Y3Rpb24xEjAQBgNVBAMMCWxvY2FsaG9zdDCB
|
51
|
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAq42Yl1+X+oL6VgFt8W6r70emJGwf
|
52
|
+
8ZrlgA1YcS++CCWHgRILoqrqGe51jGaIWzWseab/5OAblxnajShQV3HB/0S7vk/n
|
53
|
+
6OdUvxTPEpGxDSSbJByENqiZnh6HGBnxg8iu/aKvXim6rKxbVhwcDWTDgNFMxSGo
|
54
|
+
briy8wN6GzXjnw8CAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYd
|
55
|
+
T3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFAfFr5UoN0X0
|
56
|
+
LPW6amB53A+iRplyMB8GA1UdIwQYMBaAFEBDUBTRY34LfJcUIGPlipWWn9SrMA0G
|
57
|
+
CSqGSIb3DQEBBQUAA4GBAJDdhcufSol4KybEgrk06jlai9k7Vlx432mrSvfGEIqj
|
58
|
+
mhpdxb5VoTbfNtbqOuy+mTifNBlQxDBqGCpCn0Wg0le/N0e3LLAe9C6VGpqQLUGV
|
59
|
+
AOgjPMGZ6jlWseqPLdvpLOrIW+eQjpgu/xOqc8La+q/uqoa2HdyRTiTfGU2qPxvX
|
60
|
+
-----END CERTIFICATE-----
|
data/test/ssl/server.csr
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
-----BEGIN CERTIFICATE REQUEST-----
|
2
|
+
MIIBtjCCAR8CAQAwdjELMAkGA1UEBhMCR0IxGDAWBgNVBAgMD05vdHRpbmdoYW1z
|
3
|
+
aGlyZTETMBEGA1UEBwwKTm90dGluZ2hhbTEPMA0GA1UECgwGU2VydmVyMRMwEQYD
|
4
|
+
VQQLDApQcm9kdWN0aW9uMRIwEAYDVQQDDAlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcN
|
5
|
+
AQEBBQADgY0AMIGJAoGBAKuNmJdfl/qC+lYBbfFuq+9HpiRsH/Ga5YANWHEvvggl
|
6
|
+
h4ESC6Kq6hnudYxmiFs1rHmm/+TgG5cZ2o0oUFdxwf9Eu75P5+jnVL8UzxKRsQ0k
|
7
|
+
myQchDaomZ4ehxgZ8YPIrv2ir14puqysW1YcHA1kw4DRTMUhqG64svMDehs1458P
|
8
|
+
AgMBAAGgADANBgkqhkiG9w0BAQUFAAOBgQBKfRvwCj6N1SlwGLwJ7NWrasIYE4qP
|
9
|
+
L1+K5l0xnchICmB4r2kGMN7uoYZGf+rbufQXV6R4DrnsNQVLZGB0OIs0qH1dOIr4
|
10
|
+
dr9+VZwSKkig+EGSkefKCsqaS9IzlosT+tsOc2AAl4xpradpVbt7Ln6GlpNfNP+x
|
11
|
+
ry3A9QBKB3zdMw==
|
12
|
+
-----END CERTIFICATE REQUEST-----
|
data/test/ssl/server.key
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXAIBAAKBgQCrjZiXX5f6gvpWAW3xbqvvR6YkbB/xmuWADVhxL74IJYeBEgui
|
3
|
+
quoZ7nWMZohbNax5pv/k4BuXGdqNKFBXccH/RLu+T+fo51S/FM8SkbENJJskHIQ2
|
4
|
+
qJmeHocYGfGDyK79oq9eKbqsrFtWHBwNZMOA0UzFIahuuLLzA3obNeOfDwIDAQAB
|
5
|
+
AoGAIbMdCI9kwXc9SevZ9xVwfP6sKnd7BvEQqEj22LUyNVN5/ObYlknQ1us6+Cuk
|
6
|
+
GZa/nN4rYoCLqvEPN691qNfV7cbiIJcGEMXkBnjaM/ISh6Iv0eGNsX+D7PZOchLK
|
7
|
+
dlVg7wdzRsuOlbGkWAOPpCLL8JazHKp89+RjiPajB1IEQaECQQDaI/ZZVbiDvTBY
|
8
|
+
ZI57XJR7eSrn5WcN+LGhOv8G+3HXNDh7hcTAlvfQkZxXHIcc/SgWnkfKBEaC7P5W
|
9
|
+
T4ImQHqZAkEAyVO+tq/w6rcCK8x0LHjyQ2lmMCKCL/oJ/oWjQCEeZPyII1anZKhk
|
10
|
+
9Lkbzf432FZn8s2aOS9D5x6TjfJxgkNX5wJAK2CLVChfkJLGUk1sp8s5G3R0u7g6
|
11
|
+
TeTuLYl1vQWzFYAk2ys2fLWIgcjytb/Ofk0484Z18A35l39Y9ADLeJ/JwQJAZf02
|
12
|
+
r/WRZlYvk2CPubfLgrryOZBBw2w3g+jPOr2MWDxV+xD629My0Ya0vzX5tG6RWj8t
|
13
|
+
0apQC9VBirc3KXZUIQJBAJ+y07xmUN5a2wpDu3UzmeZn3HdzJO7fBAPi4h8xnLZQ
|
14
|
+
N5Qu629DQq+X/TzVv2GjBWQHePjezL0NPfch9VzKrMM=
|
15
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1 @@
|
|
1
|
+
02
|
@@ -0,0 +1,4 @@
|
|
1
|
+
V 180829220329Z 01 unknown /C=GB/ST=Nottinghamshire/L=Nottingham/O=Server/OU=Production/CN=localhost
|
2
|
+
V 180829220331Z 02 unknown /C=GB/ST=Nottinghamshire/L=Nottingham/O=Server/OU=Production/CN=test client
|
3
|
+
V 120821000000Z 03 unknown /C=GB/ST=Nottinghamshire/L=Nottingham/O=Server/OU=Production/CN=test client expired
|
4
|
+
R 180829220334Z 130830220335Z 04 unknown /C=GB/ST=Nottinghamshire/L=Nottingham/O=Server/OU=Production/CN=test client revoked
|
@@ -0,0 +1 @@
|
|
1
|
+
unique_subject = yes
|
@@ -0,0 +1 @@
|
|
1
|
+
05
|
@@ -0,0 +1,58 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 2 (0x2)
|
5
|
+
Signature Algorithm: sha1WithRSAEncryption
|
6
|
+
Issuer: C=GB, ST=Derbyshire, L=Derby, O=Mosquitto Project, OU=Testing, CN=Root CA
|
7
|
+
Validity
|
8
|
+
Not Before: Aug 30 22:03:27 2013 GMT
|
9
|
+
Not After : Aug 29 22:03:27 2018 GMT
|
10
|
+
Subject: C=GB, ST=Derbyshire, O=Mosquitto Project, OU=Testing, CN=Alternative Signing CA
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
Public-Key: (1024 bit)
|
14
|
+
Modulus:
|
15
|
+
00:d4:04:e6:69:13:5c:2d:56:c5:0e:10:f3:5b:34:
|
16
|
+
b8:f0:db:00:4f:e4:c4:e3:2d:a4:32:0b:d6:ab:53:
|
17
|
+
a1:a8:31:e9:e8:3d:6f:fb:8d:d4:f7:09:ad:54:5c:
|
18
|
+
47:b3:27:4a:c8:d1:95:1e:43:2a:c9:4b:b6:c2:81:
|
19
|
+
8a:4b:84:56:f2:88:43:b9:53:5a:e2:f8:91:6b:2f:
|
20
|
+
26:1e:87:62:73:eb:c1:45:9e:7a:97:3f:f8:db:d2:
|
21
|
+
bf:d6:44:20:a7:84:fb:11:eb:e9:cb:83:5f:74:39:
|
22
|
+
a7:95:85:4c:0f:07:c0:01:50:01:ff:34:b4:2c:8f:
|
23
|
+
50:d8:ee:61:cd:35:40:2c:05
|
24
|
+
Exponent: 65537 (0x10001)
|
25
|
+
X509v3 extensions:
|
26
|
+
X509v3 Subject Key Identifier:
|
27
|
+
9A:86:EB:20:AE:18:31:4F:8D:E2:0D:B9:FA:63:31:EA:DF:A4:8C:35
|
28
|
+
X509v3 Authority Key Identifier:
|
29
|
+
keyid:28:8D:BF:F8:DE:D1:F5:BB:26:37:A4:4D:27:FD:37:91:EC:6B:0C:DD
|
30
|
+
|
31
|
+
X509v3 Basic Constraints:
|
32
|
+
CA:TRUE
|
33
|
+
Signature Algorithm: sha1WithRSAEncryption
|
34
|
+
af:8e:86:a9:b0:74:70:1b:46:4f:85:3c:7d:4e:6d:a0:de:f4:
|
35
|
+
45:e2:34:d8:3f:a1:c6:18:35:ed:1b:f2:19:88:79:b5:da:a5:
|
36
|
+
df:e8:82:a1:e8:72:c0:da:68:3c:3b:83:fa:23:2d:85:d6:97:
|
37
|
+
b0:70:02:22:39:10:40:de:e6:45:86:a8:ee:85:a9:04:f2:51:
|
38
|
+
99:82:a2:e3:8f:b6:fd:8a:29:e8:3a:47:92:56:a6:98:cf:b7:
|
39
|
+
39:5c:4f:83:80:a9:9f:89:f6:a6:33:95:d1:f3:5d:65:30:aa:
|
40
|
+
ad:89:40:c0:fd:d1:24:6a:f5:b2:c8:50:71:9b:01:c6:cc:8c:
|
41
|
+
af:35
|
42
|
+
-----BEGIN CERTIFICATE-----
|
43
|
+
MIICqTCCAhKgAwIBAgIBAjANBgkqhkiG9w0BAQUFADByMQswCQYDVQQGEwJHQjET
|
44
|
+
MBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkxGjAYBgNVBAoMEU1v
|
45
|
+
c3F1aXR0byBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAwDgYDVQQDDAdSb290
|
46
|
+
IENBMB4XDTEzMDgzMDIyMDMyN1oXDTE4MDgyOTIyMDMyN1owcTELMAkGA1UEBhMC
|
47
|
+
R0IxEzARBgNVBAgMCkRlcmJ5c2hpcmUxGjAYBgNVBAoMEU1vc3F1aXR0byBQcm9q
|
48
|
+
ZWN0MRAwDgYDVQQLDAdUZXN0aW5nMR8wHQYDVQQDDBZBbHRlcm5hdGl2ZSBTaWdu
|
49
|
+
aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUBOZpE1wtVsUOEPNb
|
50
|
+
NLjw2wBP5MTjLaQyC9arU6GoMenoPW/7jdT3Ca1UXEezJ0rI0ZUeQyrJS7bCgYpL
|
51
|
+
hFbyiEO5U1ri+JFrLyYeh2Jz68FFnnqXP/jb0r/WRCCnhPsR6+nLg190OaeVhUwP
|
52
|
+
B8ABUAH/NLQsj1DY7mHNNUAsBQIDAQABo1AwTjAdBgNVHQ4EFgQUmobrIK4YMU+N
|
53
|
+
4g25+mMx6t+kjDUwHwYDVR0jBBgwFoAUKI2/+N7R9bsmN6RNJ/03kexrDN0wDAYD
|
54
|
+
VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCvjoapsHRwG0ZPhTx9Tm2g3vRF
|
55
|
+
4jTYP6HGGDXtG/IZiHm12qXf6IKh6HLA2mg8O4P6Iy2F1pewcAIiORBA3uZFhqju
|
56
|
+
hakE8lGZgqLjj7b9iinoOkeSVqaYz7c5XE+DgKmfifamM5XR811lMKqtiUDA/dEk
|
57
|
+
avWyyFBxmwHGzIyvNQ==
|
58
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXQIBAAKBgQDUBOZpE1wtVsUOEPNbNLjw2wBP5MTjLaQyC9arU6GoMenoPW/7
|
3
|
+
jdT3Ca1UXEezJ0rI0ZUeQyrJS7bCgYpLhFbyiEO5U1ri+JFrLyYeh2Jz68FFnnqX
|
4
|
+
P/jb0r/WRCCnhPsR6+nLg190OaeVhUwPB8ABUAH/NLQsj1DY7mHNNUAsBQIDAQAB
|
5
|
+
AoGACeLwm5W7hqG1LqK7tlUPCqwrp44TYESQk4TZzcNoll89eQbkYeaLN7nLy1NC
|
6
|
+
RKhgZFzhhze6lwhgzVEdEchqBW9qtznz/D2rxKfuRrlKylG7WzOIPHjIWFpkuRcm
|
7
|
+
7rTJnqMTBndH8zfGd8c+q7YVRxgA4r4UG8NMq9Mqrp0LmgECQQD7eisZIbsbgVpW
|
8
|
+
cM3zusTYcud+eky0TJhHuZWRFoIrvNk9iHEcI47J+0t4bTlXxuU9oarL3bvMmNBb
|
9
|
+
HMceWwnpAkEA19UP2MgM6yKioYJ+2pCYlNdWLR3HHAX4QY1VJk4C2+V5Sw7Ld3NP
|
10
|
+
WBOH5XYK5tfWmmt+C8g2ga1iY9BEb9cjvQJAIAGDfLZbTvvemIPQ4oVRyk6Ngf5k
|
11
|
+
xsm809wd2hJoTNLDP16fLrqj0Lcn+tLD6pUI1hg+WaYF4dtNIVt/SDDECQJBAIpi
|
12
|
+
TbrM6ZuJpYSwyu0QcQRd3R8oTJWnLjm5iLL6qdKcG10Iq2R3RpROUX/KY8sG8M4p
|
13
|
+
xbOAN5KFvOQKkRa0dnECQQDkz6bXTDHQlerNZ5B0MFFL5VrOC/n4qyVvtJ4jasK9
|
14
|
+
3GF3X27zr4XyMfKgL+WPLJMG5nmv62MV1vhUtbvM+GqN
|
15
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIICujCCAiOgAwIBAgIJANMI717jaH+OMA0GCSqGSIb3DQEBBQUAMHYxCzAJBgNV
|
3
|
+
BAYTAkdCMRMwEQYDVQQIDApEZXJieXNoaXJlMQ4wDAYDVQQHDAVEZXJieTEaMBgG
|
4
|
+
A1UECgwRTW9zcXVpdHRvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3RpbmcxFDASBgNV
|
5
|
+
BAMMC0JhZCBSb290IENBMB4XDTEzMDgzMDIyMDMxN1oXDTIzMDgyODIyMDMxN1ow
|
6
|
+
djELMAkGA1UEBhMCR0IxEzARBgNVBAgMCkRlcmJ5c2hpcmUxDjAMBgNVBAcMBURl
|
7
|
+
cmJ5MRowGAYDVQQKDBFNb3NxdWl0dG8gUHJvamVjdDEQMA4GA1UECwwHVGVzdGlu
|
8
|
+
ZzEUMBIGA1UEAwwLQmFkIFJvb3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
|
9
|
+
AoGBANgcLofeUGl23VLK8ZMgoc8/shrVQFRgBAk4/0S6+HHNZg15Nm3ECl9voC4q
|
10
|
+
fZY0g0ZCGvWA9QPim1lR7RjzWk4GCjyyJrGAPaQ96Dr1t6xq9eO3l0QyAgyuV3UX
|
11
|
+
IYhWhuf3q+HtHmZJfof1RSLjNf5JFRCxWoYKGmOP+nDVchCnAgMBAAGjUDBOMB0G
|
12
|
+
A1UdDgQWBBTeznI4RKjkyJl7N+BvRGCBZAIO2jAfBgNVHSMEGDAWgBTeznI4RKjk
|
13
|
+
yJl7N+BvRGCBZAIO2jAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAKnY
|
14
|
+
Fco0xDWuqeJsGJzMiHqWVy6NAfZyMt1UJAojry+jDQXgW+zPscpwAd+24xQLPPOR
|
15
|
+
R+Cp666oAr1oksaU93Lo5hUmc+1dkaFQZspZ4H29ItZ701OptgSABNTmj2nvdQEG
|
16
|
+
t8HBAF1tzN8Vxrvy4Mtzs51E6M0oVIV+TegQgXSJ
|
17
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICWwIBAAKBgQDYHC6H3lBpdt1SyvGTIKHPP7Ia1UBUYAQJOP9EuvhxzWYNeTZt
|
3
|
+
xApfb6AuKn2WNINGQhr1gPUD4ptZUe0Y81pOBgo8siaxgD2kPeg69besavXjt5dE
|
4
|
+
MgIMrld1FyGIVobn96vh7R5mSX6H9UUi4zX+SRUQsVqGChpjj/pw1XIQpwIDAQAB
|
5
|
+
AoGAMo+dX1JnE9WogGdUz6xRzzBC1j5QV61DJHk+V/E6kT2SA9L5JgM4vg1at5Jf
|
6
|
+
YZYVpIlwz0GFkYwh9mrRgwXkeXB4LfA31VTOw5l3NzRGyHERiFlhnf5W5pEJOaWm
|
7
|
+
gaOm7/5M5MBrQqgdNHGNhr1hgggXnSXbrhoOu8LmItcGxrECQQD5HBsQSlE+AJg7
|
8
|
+
ayAfugbmRD+P9OyCDPx19GHL3D0FWc9xGLn5XQ9qFyGgY8vKkRUUsAn4TyDLjyBa
|
9
|
+
zWsX0chvAkEA3hZpfDtZuEtdhA2H5xq8WCH3DU4a2Qf/isB+r1PMV1xZ+FfmqmBE
|
10
|
+
d6g83NpjyWreZG9bafERCLO8mAjhQdknSQJAVref/DXCvlC6rcSG9ERv7mzHq7dZ
|
11
|
+
NZSLtgwSl0LdwyUWf4paAyKQISBYRls3MBb9PaxibBwvkG0MmE91/l665QJAfwGk
|
12
|
+
K6apZYq8HTO7v797bI9oAJTlJ666RjhVeqDaoC8xSKPERzUskp2EyOyf2mUib597
|
13
|
+
ULfK/QYE2ZFieMzd+QJAIYYxEYBb1LJ4PPDsV5JQRmaMb6r5ElOMl0sJs878o0L+
|
14
|
+
oOOeyn/8cbKHTtJLfm21YfNUO1TsRJZ3bOlhAPrT/g==
|
15
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1 @@
|
|
1
|
+
CDAE0E564A2891AA
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIICsjCCAhugAwIBAgIJAOOjGsO7TBrTMA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV
|
3
|
+
BAYTAkdCMRMwEQYDVQQIDApEZXJieXNoaXJlMQ4wDAYDVQQHDAVEZXJieTEaMBgG
|
4
|
+
A1UECgwRTW9zcXVpdHRvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3RpbmcxEDAOBgNV
|
5
|
+
BAMMB1Jvb3QgQ0EwHhcNMTMwODMwMjIwMzE3WhcNMjMwODI4MjIwMzE3WjByMQsw
|
6
|
+
CQYDVQQGEwJHQjETMBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkx
|
7
|
+
GjAYBgNVBAoMEU1vc3F1aXR0byBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAw
|
8
|
+
DgYDVQQDDAdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCih0Ux
|
9
|
+
pn7wdxufnDagJtW/mf4at3n1TKGVNirCIh8hoU+EdIqLarNt9ayWnJc3h8cHvG9F
|
10
|
+
21ic2zbM+I5L9Iavqkpb9hChLm3Ft+HIxKliXnB48Fr5r1J/rt3jIHHwE02HcPm1
|
11
|
+
TqLKejHpjngZuMjRV/A5CVJ/iAQZy9ABRjEnRQIDAQABo1AwTjAdBgNVHQ4EFgQU
|
12
|
+
8YIrNiwFO8c97RWwfMUGokdbxU0wHwYDVR0jBBgwFoAU8YIrNiwFO8c97RWwfMUG
|
13
|
+
okdbxU0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCI9QpvF3fdWO1g
|
14
|
+
W+zOZzBPspqIXqoRou8P135lNTLWHTixFAscWNdPOZn19zzmPGRKMMmtzOqoRMAx
|
15
|
+
XDORn9n7ZhyIn2kjw5nTfwrO21TsgYaUOGQSCay5GPFryAEX+1kWkqOoVbJ3F99Q
|
16
|
+
wU8uq/pogwQ/VTSQJqgUCEvN1aiyLw==
|
17
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXgIBAAKBgQCih0Uxpn7wdxufnDagJtW/mf4at3n1TKGVNirCIh8hoU+EdIqL
|
3
|
+
arNt9ayWnJc3h8cHvG9F21ic2zbM+I5L9Iavqkpb9hChLm3Ft+HIxKliXnB48Fr5
|
4
|
+
r1J/rt3jIHHwE02HcPm1TqLKejHpjngZuMjRV/A5CVJ/iAQZy9ABRjEnRQIDAQAB
|
5
|
+
AoGBAJiL7l4Tr8FzifHdZUgcKzOTDfV1kHq0WlT6alecPywJg+EGoaMJmy/yDvOu
|
6
|
+
NiBgyGZybt5aammPN3hbMvQHpwFqswU6H09YjNYGHgA1sqvZhgczLL6l0PM8dwTl
|
7
|
+
LDL72SQL5sxM8podBaKVqbXgbGHugvV4cG3l/YzqIednfk0BAkEA1f9L3Fx9nN6B
|
8
|
+
jUeS9QY80wk7CjAuARHxvlarmTMX08UZgmo4DgwFK0yP5mLiz+X+2xyyClOHOnU+
|
9
|
+
8Gcw/pBAeQJBAMJt0o0VOBQW2L8lFnc6mJedTwpohAVJAb957UO4VcR+RmyARd5G
|
10
|
+
gIYQzQp7pXikOBb97X7BSFDW/dnIbbCD4i0CQQC9MAWOHIrEq4XXNCa8zjXp0KhM
|
11
|
+
eonBUm7o+lCckSoIg6DoxiUmbgQH4pj5cgTZDZmBdt4D+RJ9YPgyqtgKxdbpAkEA
|
12
|
+
hOJ6nWJ7SX+z9DBtAmBSGo2xj/OPB+21/CBhQX+jXwDPMSkal6in/vlMqnWHysSy
|
13
|
+
cURsJc4ElvvZ1BdgoNwCoQJAFceaHLS/G6PKZ+ASdjSUthYIPfXXh8eg4K082uUp
|
14
|
+
TLN1/csizBLn5Z74T0gGBDD/w1K9/xZ2cUNO+wLkNT9JJg==
|
15
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIICsjCCAhugAwIBAgIJAPTHt3psLAUTMA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV
|
3
|
+
BAYTAkdCMRMwEQYDVQQIDApEZXJieXNoaXJlMQ4wDAYDVQQHDAVEZXJieTEaMBgG
|
4
|
+
A1UECgwRTW9zcXVpdHRvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3RpbmcxEDAOBgNV
|
5
|
+
BAMMB1Jvb3QgQ0EwHhcNMTMwODMwMjIwMzE2WhcNMjMwODI4MjIwMzE2WjByMQsw
|
6
|
+
CQYDVQQGEwJHQjETMBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkx
|
7
|
+
GjAYBgNVBAoMEU1vc3F1aXR0byBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAw
|
8
|
+
DgYDVQQDDAdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDB3KGu
|
9
|
+
pkiSYbDAaH0ewiCb44CLsAdV5PdYgZHH0jlH8oXkNH0MU3qs7Se2UWrnPQb1VbdI
|
10
|
+
K2DpSTk+3XuWO0BOqQ+/JuRFN/omwrucyKcRNm4MQP1aY2Tm04zsP0Muy4aSyMIk
|
11
|
+
F6jxQzAmIgj8VgkQ/y/knS5tbQ2kkoWKRn1RCQIDAQABo1AwTjAdBgNVHQ4EFgQU
|
12
|
+
KI2/+N7R9bsmN6RNJ/03kexrDN0wHwYDVR0jBBgwFoAUKI2/+N7R9bsmN6RNJ/03
|
13
|
+
kexrDN0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCn2WxbxDd5ar2U
|
14
|
+
UvttJW4I+/V1h3iAQCXVDAegOGzsYp3cfIdd2oZY++Q9FhzHh8nP18D+CeC9MMu2
|
15
|
+
H2iLULUV08cGSaDLlpo1eq2oJc5ygLOEt/XK7/aIMRwrlP/CoSrI2GPkeA8rka96
|
16
|
+
G0WtyGRkzqBKHpt6CnseA2evP5NVcQ==
|
17
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXAIBAAKBgQDB3KGupkiSYbDAaH0ewiCb44CLsAdV5PdYgZHH0jlH8oXkNH0M
|
3
|
+
U3qs7Se2UWrnPQb1VbdIK2DpSTk+3XuWO0BOqQ+/JuRFN/omwrucyKcRNm4MQP1a
|
4
|
+
Y2Tm04zsP0Muy4aSyMIkF6jxQzAmIgj8VgkQ/y/knS5tbQ2kkoWKRn1RCQIDAQAB
|
5
|
+
AoGAJJUM0ZdBVJYos3ZEPhyl6KTaqgFysOu/HS1+I/XwpzoFuBWLj1rlaGJsPwRI
|
6
|
+
JxCmEn+1UWIWLI+LxOgonSXbMWg+G+un/UxgsPGIPeskDuqPXe97tdnd5c1HDwNf
|
7
|
+
Sy6fzzd0PyyFHrUnxCDl5Y6oJ3O9ZJ1vfELIVyXDoXyCKi0CQQD3U1SM7YhgczaO
|
8
|
+
9EwHJI8DBeab09DZ3gUT/4zeNVeHGjRtYhZuxJWeINsj0gUJtG/yY6+CaHm3TGPj
|
9
|
+
WOToqq0/AkEAyKlD6uIJ0YuBozmSTkBUJpEaQ1xkDszgUPlxS+73IGz+LZjstbML
|
10
|
+
l1irYV5OyWMDdg/JUmnXl+8gOV+1UtFHtwJAfmDGQ3zcwuwcZM/QSZYUvaa2P8ns
|
11
|
+
XmdkkON0R9dZ8l8hiwMkE1XAXhzL3XHjwSHCUkk91ZUtHMyb/f/eeEU+YQJBAJxD
|
12
|
+
3QVlBFpwNwPDCOHxjNb/9yDwKWexOxs0Nnv42/EfkA44YlbZ2TQCtGw+QkLo3cAq
|
13
|
+
aRDKJkBG06R6mT2mhx8CQEhJ5VEhTuM88SQ9mEUup4XDc9wSPK5VK7HLR0Ip22fU
|
14
|
+
Lh1L/oAsWDIFo3zBQ9aSpiTWzAS/D7gyZPZz17dsJZk=
|
15
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,58 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 1 (0x1)
|
5
|
+
Signature Algorithm: sha1WithRSAEncryption
|
6
|
+
Issuer: C=GB, ST=Derbyshire, L=Derby, O=Mosquitto Project, OU=Testing, CN=Root CA
|
7
|
+
Validity
|
8
|
+
Not Before: Aug 30 22:03:18 2013 GMT
|
9
|
+
Not After : Aug 29 22:03:18 2018 GMT
|
10
|
+
Subject: C=GB, ST=Derbyshire, O=Mosquitto Project, OU=Testing, CN=Signing CA
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
Public-Key: (1024 bit)
|
14
|
+
Modulus:
|
15
|
+
00:a4:b5:b9:31:d8:b4:d6:de:49:c0:cc:15:3f:b8:
|
16
|
+
50:8b:be:4a:f4:d3:94:a9:dd:53:2a:e9:df:aa:0d:
|
17
|
+
3c:08:7b:a7:51:6d:b9:44:98:b7:8d:03:ab:67:9e:
|
18
|
+
e1:c4:23:4d:33:8d:0a:90:9f:c6:de:82:14:4c:f6:
|
19
|
+
75:5d:a4:e1:a3:ea:fc:9b:79:dd:cb:36:20:87:a3:
|
20
|
+
9d:eb:e6:5b:0c:53:34:73:cb:dd:a8:e4:0e:7f:f0:
|
21
|
+
5f:8a:3c:d8:8f:01:ff:66:31:16:41:1b:e3:7a:61:
|
22
|
+
2c:3d:44:a5:a9:dd:1d:42:e5:5a:a1:df:29:35:dc:
|
23
|
+
91:5e:9d:82:60:0d:7a:08:db
|
24
|
+
Exponent: 65537 (0x10001)
|
25
|
+
X509v3 extensions:
|
26
|
+
X509v3 Subject Key Identifier:
|
27
|
+
40:43:50:14:D1:63:7E:0B:7C:97:14:20:63:E5:8A:95:96:9F:D4:AB
|
28
|
+
X509v3 Authority Key Identifier:
|
29
|
+
keyid:28:8D:BF:F8:DE:D1:F5:BB:26:37:A4:4D:27:FD:37:91:EC:6B:0C:DD
|
30
|
+
|
31
|
+
X509v3 Basic Constraints:
|
32
|
+
CA:TRUE
|
33
|
+
Signature Algorithm: sha1WithRSAEncryption
|
34
|
+
8a:b1:49:b4:53:eb:bb:9d:5e:20:f4:d7:8d:b8:24:a1:28:95:
|
35
|
+
56:72:03:ed:15:ef:f0:ff:65:b5:6e:34:cf:27:83:7b:57:40:
|
36
|
+
a7:93:61:f0:93:ff:02:b4:74:e0:43:dc:65:0c:e8:a6:20:f9:
|
37
|
+
8c:88:82:8f:0e:8d:33:4d:ba:bb:28:ff:29:5f:a8:96:60:31:
|
38
|
+
f5:13:15:19:60:a4:00:0e:fc:a7:79:b6:10:95:0b:7b:88:75:
|
39
|
+
03:ec:7d:94:63:9e:67:2e:2e:9c:fe:79:89:61:93:75:52:f2:
|
40
|
+
36:48:a6:2d:c0:b2:a7:36:c2:36:50:53:b3:cd:e7:07:1d:e5:
|
41
|
+
6a:1d
|
42
|
+
-----BEGIN CERTIFICATE-----
|
43
|
+
MIICnTCCAgagAwIBAgIBATANBgkqhkiG9w0BAQUFADByMQswCQYDVQQGEwJHQjET
|
44
|
+
MBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkxGjAYBgNVBAoMEU1v
|
45
|
+
c3F1aXR0byBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAwDgYDVQQDDAdSb290
|
46
|
+
IENBMB4XDTEzMDgzMDIyMDMxOFoXDTE4MDgyOTIyMDMxOFowZTELMAkGA1UEBhMC
|
47
|
+
R0IxEzARBgNVBAgMCkRlcmJ5c2hpcmUxGjAYBgNVBAoMEU1vc3F1aXR0byBQcm9q
|
48
|
+
ZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRMwEQYDVQQDDApTaWduaW5nIENBMIGfMA0G
|
49
|
+
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCktbkx2LTW3knAzBU/uFCLvkr005Sp3VMq
|
50
|
+
6d+qDTwIe6dRbblEmLeNA6tnnuHEI00zjQqQn8beghRM9nVdpOGj6vybed3LNiCH
|
51
|
+
o53r5lsMUzRzy92o5A5/8F+KPNiPAf9mMRZBG+N6YSw9RKWp3R1C5Vqh3yk13JFe
|
52
|
+
nYJgDXoI2wIDAQABo1AwTjAdBgNVHQ4EFgQUQENQFNFjfgt8lxQgY+WKlZaf1Ksw
|
53
|
+
HwYDVR0jBBgwFoAUKI2/+N7R9bsmN6RNJ/03kexrDN0wDAYDVR0TBAUwAwEB/zAN
|
54
|
+
BgkqhkiG9w0BAQUFAAOBgQCKsUm0U+u7nV4g9NeNuCShKJVWcgPtFe/w/2W1bjTP
|
55
|
+
J4N7V0Cnk2Hwk/8CtHTgQ9xlDOimIPmMiIKPDo0zTbq7KP8pX6iWYDH1ExUZYKQA
|
56
|
+
DvynebYQlQt7iHUD7H2UY55nLi6c/nmJYZN1UvI2SKYtwLKnNsI2UFOzzecHHeVq
|
57
|
+
HQ==
|
58
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXAIBAAKBgQCktbkx2LTW3knAzBU/uFCLvkr005Sp3VMq6d+qDTwIe6dRbblE
|
3
|
+
mLeNA6tnnuHEI00zjQqQn8beghRM9nVdpOGj6vybed3LNiCHo53r5lsMUzRzy92o
|
4
|
+
5A5/8F+KPNiPAf9mMRZBG+N6YSw9RKWp3R1C5Vqh3yk13JFenYJgDXoI2wIDAQAB
|
5
|
+
AoGAHx3Jn9Ydy93wtwCXHxOV++B2TqxOEI0kch3+yCR56+xYXrTI5GGpg3VnA0tr
|
6
|
+
wV8d7Zg+n7XfnxeZ+DQzVf6ZNc24mf7J7gM881GA1zmrUOyolpo5sgc9PW4mbyC1
|
7
|
+
rvMsLyEGP+fP93MDJ0CYhQjxa4eGNsiLTXtHOsg9y4a1cgkCQQDXgy5ajpo4vzvK
|
8
|
+
2zMPINIk2QdRQ6jIKwnKUtBmoNsCPcwIW1yhJUc6g1C3qGpi0p7edeLlOaAfugbm
|
9
|
+
5m1M70L3AkEAw6dAg6fWTDNxt6IO6GtdJWoEJbzV7fWvRUuT6Zh/m14OwGMJvOQN
|
10
|
+
vz4U0FFZK2EbUBL+Za5enzJRyj2AUOiMPQJBAMo3pukF4aPZnIstvu01CLnWgs03
|
11
|
+
xUl9SMR1jGKgEKA7yBUXVQVH61v2F2kdOCXeJ3/p8arQtXTPouZJ1MlZv+UCQA80
|
12
|
+
XzIcB+5SDSNNJ8VuGoX+0CWyoBlm/2DuN6dun3QOgiz3RVl1i4/yHiH2QGy7lijJ
|
13
|
+
4RU70MSkX3DNCLzA5a0CQEb3xQSj+YJW7AHAQI8/9vSO5f2yYuyrtMy5aU8k7hKB
|
14
|
+
Sopu/XLwoWt27pl596Gur0adYnBAZMYYueY8oCN5DNU=
|
15
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
|
+
|
5
|
+
class TestCallbacks < MosquittoTestCase
|
6
|
+
def test_connect_disconnect_callback
|
7
|
+
connected, disconnected = false
|
8
|
+
client = Mosquitto::Client.new
|
9
|
+
client.logger = Logger.new(STDOUT)
|
10
|
+
assert client.loop_start
|
11
|
+
client.on_connect do |rc|
|
12
|
+
connected = true
|
13
|
+
end
|
14
|
+
client.on_disconnect do |rc|
|
15
|
+
disconnected = true
|
16
|
+
end
|
17
|
+
assert client.connect(TEST_HOST, TEST_PORT, 10)
|
18
|
+
client.wait_readable
|
19
|
+
assert client.disconnect
|
20
|
+
sleep 3
|
21
|
+
assert connected
|
22
|
+
assert disconnected
|
23
|
+
ensure
|
24
|
+
client.loop_stop(true)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_log_callback
|
28
|
+
logs = []
|
29
|
+
client = Mosquitto::Client.new
|
30
|
+
client.on_log do |level, msg|
|
31
|
+
logs << msg
|
32
|
+
end
|
33
|
+
assert client.connect(TEST_HOST, TEST_PORT, 10)
|
34
|
+
assert client.disconnect
|
35
|
+
client.wait_readable
|
36
|
+
assert_equal 2, logs.size
|
37
|
+
assert_match(/CONNECT/, logs[0])
|
38
|
+
assert_match(/DISCONNECT/, logs[1])
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_subscribe_unsubscribe_callback
|
42
|
+
msg_id = 0
|
43
|
+
subscribed = false
|
44
|
+
unsubscribed = false
|
45
|
+
client = Mosquitto::Client.new
|
46
|
+
client.logger = Logger.new(STDOUT)
|
47
|
+
assert client.loop_start
|
48
|
+
client.on_connect do |rc|
|
49
|
+
assert client.subscribe(nil, "test_sub_unsub", Mosquitto::AT_MOST_ONCE)
|
50
|
+
assert client.unsubscribe(nil, "test_sub_unsub")
|
51
|
+
end
|
52
|
+
client.on_subscribe do |mid,granted_qos|
|
53
|
+
subscribed = true
|
54
|
+
msg_id = mid
|
55
|
+
end
|
56
|
+
client.on_unsubscribe do |mid|
|
57
|
+
unsubscribed = true
|
58
|
+
end
|
59
|
+
assert client.connect(TEST_HOST, TEST_PORT, 10)
|
60
|
+
client.wait_readable
|
61
|
+
assert subscribed
|
62
|
+
assert unsubscribed
|
63
|
+
assert client.disconnect
|
64
|
+
assert msg_id != 0
|
65
|
+
ensure
|
66
|
+
client.loop_stop(true)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_message_callback
|
70
|
+
message = nil
|
71
|
+
publisher = Mosquitto::Client.new
|
72
|
+
publisher.loop_start
|
73
|
+
publisher.on_connect do |rc|
|
74
|
+
publisher.publish(nil, "message_callback", "test", Mosquitto::AT_MOST_ONCE, true)
|
75
|
+
end
|
76
|
+
publisher.connect(TEST_HOST, TEST_PORT, 10)
|
77
|
+
publisher.wait_readable
|
78
|
+
publisher.loop_stop(true)
|
79
|
+
|
80
|
+
subscriber = Mosquitto::Client.new
|
81
|
+
subscriber.loop_start
|
82
|
+
subscriber.on_connect do |rc|
|
83
|
+
subscriber.subscribe(nil, "message_callback", Mosquitto::AT_MOST_ONCE)
|
84
|
+
end
|
85
|
+
subscriber.connect(TEST_HOST, TEST_PORT, 10)
|
86
|
+
subscriber.on_message do |msg|
|
87
|
+
message = msg
|
88
|
+
end
|
89
|
+
subscriber.wait_readable
|
90
|
+
subscriber.loop_stop(true)
|
91
|
+
assert_equal "test", message.to_s
|
92
|
+
end
|
93
|
+
end
|