Skip to content

Commit f0d5a95

Browse files
authored
Adds tests for HTTP device sample. (#954)
* Adds tests for HTTP device sample. * Small change to instructions for README.
1 parent 4cf0e2b commit f0d5a95

File tree

12 files changed

+297
-158
lines changed

12 files changed

+297
-158
lines changed

iot/api-client/http_example/README.md

Lines changed: 0 additions & 75 deletions
This file was deleted.

iot/api-client/http_example/pom.xml

Lines changed: 0 additions & 62 deletions
This file was deleted.

iot/api-client/manager/README.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,80 @@ Patch a device with RSA:
134134
-project_id=blue-jet-123 -pubsub_topic=hello-java \
135135
-registry_name=hello-java -rsa_certificate_file ../rsa_cert.pem \
136136
-device_id="java-device-0" -command=patch-device-rsa
137+
138+
139+
# Cloud IoT Core Java HTTP example
140+
141+
This sample app publishes data to Cloud Pub/Sub using the HTTP bridge provided
142+
as part of Google Cloud IoT Core.
143+
144+
Note that before you can run the sample, you must configure a Google Cloud
145+
PubSub topic for Cloud IoT Core and register a device as described in the
146+
[parent README](../README.md).
147+
148+
## Setup
149+
150+
Run the following command to install the dependencies using Maven:
151+
152+
mvn clean compile
153+
154+
## Running the sample
155+
156+
The following command summarizes the sample usage:
157+
158+
```
159+
mvn exec:java \
160+
-Dexec.mainClass="com.example.cloud.iot.examples.HttpExample" \
161+
-Dexec.args="-project_id=<your-iot-project> \
162+
-registry_id=<your-registry-id> \
163+
-device_id=<device-id> \
164+
-private_key_file=<path-to-keyfile> \
165+
-message_type=<event|state> \
166+
-algorithm=<RS256|ES256>"
167+
```
168+
169+
For example, if your project ID is `blue-jet-123`, your service account
170+
credentials are stored in your home folder in creds.json and you have generated
171+
your credentials using the [`generate_keys.sh`](../generate_keys.sh) script
172+
provided in the parent folder, you can run the sample as:
173+
174+
```
175+
mvn exec:java \
176+
-Dexec.mainClass="com.example.cloud.iot.examples.HttpExample" \
177+
-Dexec.args="-project_id=blue-jet-123 \
178+
-registry_id=my-registry \
179+
-device_id=my-java-device \
180+
-private_key_file=../rsa_private_pkcs8 \
181+
-algorithm=RS256"
182+
```
183+
184+
To publish state messages, run the sample as follows:
185+
186+
```
187+
mvn exec:java \
188+
-Dexec.mainClass="com.example.cloud.iot.examples.HttpExample" \
189+
-Dexec.args="-project_id=blue-jet-123 \
190+
-registry_id=my-registry \
191+
-device_id=my-java-device \
192+
-private_key_file=../rsa_private_pkcs8 \
193+
-message_type=state \
194+
-algorithm=RS256"
195+
```
196+
197+
198+
## Reading the messages written by the sample client
199+
200+
1. Create a subscription to your topic.
201+
202+
```
203+
gcloud beta pubsub subscriptions create \
204+
projects/your-project-id/subscriptions/my-subscription \
205+
--topic device-events
206+
```
207+
208+
2. Read messages published to the topic
209+
210+
```
211+
gcloud beta pubsub subscriptions pull --auto-ack \
212+
projects/my-iot-project/subscriptions/my-subscription
213+
```

iot/api-client/manager/pom.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@
3737
</properties>
3838

3939
<dependencies>
40+
<dependency>
41+
<groupId>org.json</groupId>
42+
<artifactId>json</artifactId>
43+
<version>20090211</version>
44+
</dependency>
45+
<dependency>
46+
<groupId>io.jsonwebtoken</groupId>
47+
<artifactId>jjwt</artifactId>
48+
<version>0.7.0</version>
49+
</dependency>
50+
<dependency>
51+
<groupId>joda-time</groupId>
52+
<artifactId>joda-time</artifactId>
53+
<version>2.1</version>
54+
</dependency>
4055
<dependency>
4156
<groupId>com.google.apis</groupId>
4257
<artifactId>google-api-services-cloudiot</artifactId>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Test public certificate files
2+
3+
The certificates in this folder are only provided for testing and should not be
4+
used for registering your devices. Instructions and a shell script are in the
5+
parent folder for getting started.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-----BEGIN PUBLIC KEY-----
2-
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECfwA4OrF9Pcr1W5mXUa+Dx8hpPYd
3-
+pQ5153zNtSSaeEnA/4hrY2AKxUHmKIPJXYRkZrxTxsFElkkpLcoi/CUNQ==
2+
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJ/zj75PhGtoayWD9pm/IbXRXi9ai
3+
RQDMFQ87sOOQIWDTxnsHFplqb8cDCtO1h5QsutcAVTPZL0CZiqIg5j7b1w==
44
-----END PUBLIC KEY-----
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
-----BEGIN CERTIFICATE-----
2-
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
1818
-----END CERTIFICATE-----
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDdWhkFaxeyeXKe
3+
2Sa2pfuzIGH5jmiuDq+bETmVRSMRuNL3o1hyxMAH+Pch1h8yXacWLqrwg4gSnLfo
4+
SRIVCbTyjB8miabCZ0IhLHG4Bs+3Yz2Bf4sNiNQU3Z68mkUBMPQxg8tlYJR/xK9w
5+
nQv14jF0lGqqBO3I9Pu6AHN4PpBAnos7PIM8B2mLDFkltvoZx0/Sa9yImk01RlO0
6+
QGhkNS60AXdD8PQZaE94b5L5A1v7PqVUmyqQXQHKO4BaniNOc9zMXg7EklYWSpOR
7+
VK9ExYV7IAo/3G8p41cHim3QuKbxAAEEt0Cd7zm1v9W0PQLSDUcCaOd7DWO/HwGF
8+
F29z82NZAgMBAAECggEBAKMHcfhQqRJ1apteWqoZ1ClZR2/zmFviSypN5HhxhGPQ
9+
Gen0b/ePu9PjZbmRKEcDPUYUNyiP58+1h6pY7y15icE+vM64gY8bWFRwlI0yzxhF
10+
yo4vby4XwgRgOkK06O/4q1IwvMS8/oKgTYsG0EFYSI6RpYH1wWDKNwEGxgUhJ0O/
11+
YxTlFpEObuBg+aILeEemU6+QoULwNgfCqVUEkbSZFy5Z9D66PdRoiLum6FmwICBd
12+
rChr06ACqCxuiFhMb1VoHPinIvJNZeLClUGShi9R/hgUZfZxddpNKDtEjZGFWgNw
13+
dVpDFbpVLsqiV+B2TlfX10u9RnWoVi5r8Iv3gMdpqqUCgYEA82c9rm/fEi7fp03U
14+
Y5C1z1YX/7UP+bbsOEZi6BsnJOSptbnBt0g4Ph0TRIbWsAAjd9psU3rSK73U8kso
15+
6xCRe05RzhXWbnl80TUGQpLFcAlZd7R6eXe9kESGu+sheIXGcRJnzM6CFykerkhV
16+
nGp29t/sQBVggqBm7/o8oJg1cLcCgYEA6M608xHaMr1Xw+hEdYqAnxJ4nLwG5Gja
17+
T5NyeGyuJnPP9ullza/n2mOm6ujznzD3JGLqhixR4TI3h2vQ7oMDtkbytRFmishW
18+
rrW59OM3hohvdd0GMfI4boNCyEBMc1s1855nqHprpje+l3S9HuPUHYI4KXlQzz4o
19+
fqCoWHSonG8CgYEAjYhO2Yu7jnsrGcGr6mlPDszlD49dRrsTCHYFNSn0zQMZm83z
20+
0ntwGM4XUhWF6Llr5llf+/rDEyRDGtCRbn4n2idkcg1Irtx9s7i9dyCZJdiJ6Y1M
21+
Wi1CUQ1HuyWyRL6k8ULekLzT8Fu8t2LgRR+zJUJ3wZusjshuksRTVJ6tFGkCgYBl
22+
VxWNeYfx7ln1/XVPdSroE7JNB8w4QSxG13hM04I7Ws58PL0D/D6A4kAWobDq6vWp
23+
8SUFouVBkgp5+ITKTl2fSuL7zsdEQlD5XEHGR+IzvdBHDh9UPowyDxFS+ipNTLb/
24+
hUS6IhAaGsnsQ/TPLX14Guc3pod2rygRdv3RA3ciIQKBgEhWmdwDjB3c8/7c/vhV
25+
gU+OYziQPHJb7IYrvCxAMym+lM6SVAR62vDSkGBwZdgnr4X1LwO9/qbV+eOR07hv
26+
KhDQ9AX10y1t7FHybZMatvr0l283/BVanXonq7ihzrWjDnZU97N05gIj6Ew4EHy7
27+
EGgOLKa63rYJQK4WLwP4mMEF
28+
-----END PRIVATE KEY-----
Binary file not shown.

0 commit comments

Comments
 (0)