Skip to content

Commit cb5a124

Browse files
danielfbrightcopybara-github
authored andcommitted
feat: add best practices within sample scripts
* Share minter between sample commands * Dispose client in sample apps * Added "Run All" option Committer: @danielfbright PiperOrigin-RevId: 436576108
1 parent 781f783 commit cb5a124

3 files changed

Lines changed: 144 additions & 93 deletions

File tree

sample/src/main/java/com/google/fleetengine/auth/sample/LmfsSampleCommands.java

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ final class LmfsSampleCommands {
3030

3131
private LmfsSampleCommands() {}
3232

33+
private static FleetEngineTokenProvider minter;
34+
3335
static void createDeliveryVehicle() throws SignerInitializationException, IOException {
3436
String randomDeliveryVehicleId = String.format("delivery-vehicle-%s", UUID.randomUUID());
3537

@@ -66,14 +68,15 @@ static void createDeliveryVehicle() throws SignerInitializationException, IOExce
6668

6769
DeliveryServiceSettings settings =
6870
new FleetEngineClientSettingsModifier<
69-
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(createMinter())
71+
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(getMinter())
7072
.updateBuilder(DeliveryServiceSettings.newBuilder())
7173
.setEndpoint(LmfsConfiguration.FLEET_ENGINE_ADDRESS)
7274
.build();
7375

74-
DeliveryServiceClient client = DeliveryServiceClient.create(settings);
75-
client.createDeliveryVehicle(createDeliveryVehicleRequest);
76-
System.out.printf("Delivery Vehicle with id '%s' created\n", randomDeliveryVehicleId);
76+
try (DeliveryServiceClient client = DeliveryServiceClient.create(settings)) {
77+
client.createDeliveryVehicle(createDeliveryVehicleRequest);
78+
System.out.printf("Delivery Vehicle with id '%s' created\n", randomDeliveryVehicleId);
79+
}
7780
}
7881

7982
static void createTask() throws SignerInitializationException, IOException {
@@ -119,14 +122,15 @@ static void createTask() throws SignerInitializationException, IOException {
119122

120123
DeliveryServiceSettings settings =
121124
new FleetEngineClientSettingsModifier<
122-
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(createMinter())
125+
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(getMinter())
123126
.updateBuilder(DeliveryServiceSettings.newBuilder())
124127
.setEndpoint(LmfsConfiguration.FLEET_ENGINE_ADDRESS)
125128
.build();
126129

127-
DeliveryServiceClient client = DeliveryServiceClient.create(settings);
128-
client.createTask(createTaskRequest);
129-
System.out.printf("Task with id '%s' created\n", randomTaskId);
130+
try (DeliveryServiceClient client = DeliveryServiceClient.create(settings)) {
131+
client.createTask(createTaskRequest);
132+
System.out.printf("Task with id '%s' created\n", randomTaskId);
133+
}
130134
}
131135

132136
static void listDeliveryVehicles() throws SignerInitializationException, IOException {
@@ -138,13 +142,15 @@ static void listDeliveryVehicles() throws SignerInitializationException, IOExcep
138142

139143
DeliveryServiceSettings settings =
140144
new FleetEngineClientSettingsModifier<
141-
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(createMinter())
145+
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(getMinter())
142146
.updateBuilder(DeliveryServiceSettings.newBuilder())
143147
.setEndpoint(OdrdConfiguration.FLEET_ENGINE_ADDRESS)
144148
.build();
145149

146-
DeliveryServiceClient client = DeliveryServiceClient.create(settings);
147-
ListDeliveryVehiclesPagedResponse response = client.listDeliveryVehicles(request);
150+
ListDeliveryVehiclesPagedResponse response;
151+
try (DeliveryServiceClient client = DeliveryServiceClient.create(settings)) {
152+
response = client.listDeliveryVehicles(request);
153+
}
148154

149155
for (DeliveryVehicle vehicle : response.getPage().getValues()) {
150156
System.out.printf("Delivery Vehicle Name: %s\n", vehicle.getName());
@@ -153,22 +159,25 @@ static void listDeliveryVehicles() throws SignerInitializationException, IOExcep
153159
}
154160
}
155161

156-
private static FleetEngineTokenProvider createMinter() throws SignerInitializationException {
157-
// Create minter with delivery builder in order to produce lmfs server tokens by default
158-
return AuthTokenMinter.deliveryBuilder()
159-
// Only the account for the server signer is needed in this example
160-
.setDeliveryServerSigner(
161-
ImpersonatedSigner.create(LmfsConfiguration.DELIVERY_SERVER_TOKEN_ACCOUNT))
162-
163-
// When the audience is not set, it defaults to https://fleetengine.googleapis.com/.
164-
// This is fine in the vast majority of cases.
165-
.setTokenFactory(
166-
new FleetEngineTokenFactory(
167-
FleetEngineTokenFactorySettings.builder()
168-
.setAudience(LmfsConfiguration.FLEET_ENGINE_AUDIENCE)
169-
.build()))
170-
171-
// Build the minter
172-
.build();
162+
private static FleetEngineTokenProvider getMinter() throws SignerInitializationException {
163+
if (minter == null) {
164+
// Create minter with delivery builder in order to produce lmfs server tokens by default
165+
minter = AuthTokenMinter.deliveryBuilder()
166+
// Only the account for the server signer is needed in this example
167+
.setDeliveryServerSigner(
168+
ImpersonatedSigner.create(LmfsConfiguration.DELIVERY_SERVER_TOKEN_ACCOUNT))
169+
170+
// When the audience is not set, it defaults to https://fleetengine.googleapis.com/.
171+
// This is fine in the vast majority of cases.
172+
.setTokenFactory(
173+
new FleetEngineTokenFactory(
174+
FleetEngineTokenFactorySettings.builder()
175+
.setAudience(LmfsConfiguration.FLEET_ENGINE_AUDIENCE)
176+
.build()))
177+
178+
// Build the minter
179+
.build();
180+
}
181+
return minter;
173182
}
174183
}

sample/src/main/java/com/google/fleetengine/auth/sample/OdrdSampleCommands.java

Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ final class OdrdSampleCommands {
4242

4343
private OdrdSampleCommands() {}
4444

45+
private static FleetEngineTokenProvider minter;
46+
4547
static void createVehicle() throws SignerInitializationException, IOException {
4648
String randomVehicleId = String.format("vehicle-%s", UUID.randomUUID());
4749

@@ -85,7 +87,7 @@ static void createVehicle() throws SignerInitializationException, IOException {
8587

8688
VehicleServiceSettings settings =
8789
new FleetEngineClientSettingsModifier<
88-
VehicleServiceSettings, VehicleServiceSettings.Builder>(createMinter())
90+
VehicleServiceSettings, VehicleServiceSettings.Builder>(getMinter())
8991
.updateBuilder(VehicleServiceSettings.newBuilder())
9092
.setEndpoint(OdrdConfiguration.FLEET_ENGINE_ADDRESS)
9193
.build();
@@ -128,14 +130,16 @@ static void createTrip() throws SignerInitializationException, IOException {
128130

129131
TripServiceSettings settings =
130132
new FleetEngineClientSettingsModifier<TripServiceSettings, TripServiceSettings.Builder>(
131-
createMinter())
133+
getMinter())
132134
.updateBuilder(TripServiceSettings.newBuilder())
133135
.setEndpoint(OdrdConfiguration.FLEET_ENGINE_ADDRESS)
134136
.build();
135137

136-
TripServiceClient client = TripServiceClient.create(settings);
137-
client.createTrip(request);
138+
try (TripServiceClient client = TripServiceClient.create(settings)) {
139+
client.createTrip(request);
140+
}
138141
System.out.printf("Trip with id '%s' created\n", randomTripId);
142+
139143
}
140144

141145
static void listVehicles() throws SignerInitializationException, IOException {
@@ -147,13 +151,15 @@ static void listVehicles() throws SignerInitializationException, IOException {
147151

148152
VehicleServiceSettings settings =
149153
new FleetEngineClientSettingsModifier<
150-
VehicleServiceSettings, VehicleServiceSettings.Builder>(createMinter())
154+
VehicleServiceSettings, VehicleServiceSettings.Builder>(getMinter())
151155
.updateBuilder(VehicleServiceSettings.newBuilder())
152156
.setEndpoint(OdrdConfiguration.FLEET_ENGINE_ADDRESS)
153157
.build();
154158

155-
VehicleServiceClient client = VehicleServiceClient.create(settings);
156-
ListVehiclesPagedResponse response = client.listVehicles(request);
159+
ListVehiclesPagedResponse response;
160+
try (VehicleServiceClient client = VehicleServiceClient.create(settings)) {
161+
response = client.listVehicles(request);
162+
}
157163

158164
for (Vehicle vehicle : response.getPage().getValues()) {
159165
System.out.printf("Vehicle Name: %s\n", vehicle.getName());
@@ -188,13 +194,15 @@ static void searchVehicles() throws SignerInitializationException, IOException {
188194

189195
VehicleServiceSettings settings =
190196
new FleetEngineClientSettingsModifier<
191-
VehicleServiceSettings, VehicleServiceSettings.Builder>(createMinter())
197+
VehicleServiceSettings, VehicleServiceSettings.Builder>(getMinter())
192198
.updateBuilder(VehicleServiceSettings.newBuilder())
193199
.setEndpoint(OdrdConfiguration.FLEET_ENGINE_ADDRESS)
194200
.build();
195201

196-
VehicleServiceClient client = VehicleServiceClient.create(settings);
197-
SearchVehiclesResponse response = client.searchVehicles(request);
202+
SearchVehiclesResponse response;
203+
try (VehicleServiceClient client = VehicleServiceClient.create(settings)) {
204+
response = client.searchVehicles(request);
205+
}
198206
for (VehicleMatch vehicleMatch : response.getMatchesList()) {
199207
Vehicle vehicle = vehicleMatch.getVehicle();
200208
System.out.printf("Vehicle Name: %s\n", vehicle.getName());
@@ -216,13 +224,15 @@ static void searchTrips() throws SignerInitializationException, IOException {
216224

217225
TripServiceSettings settings =
218226
new FleetEngineClientSettingsModifier<TripServiceSettings, TripServiceSettings.Builder>(
219-
createMinter())
227+
getMinter())
220228
.updateBuilder(TripServiceSettings.newBuilder())
221229
.setEndpoint(OdrdConfiguration.FLEET_ENGINE_ADDRESS)
222230
.build();
223231

224-
TripServiceClient client = TripServiceClient.create(settings);
225-
SearchTripsPagedResponse response = client.searchTrips(request);
232+
SearchTripsPagedResponse response;
233+
try (TripServiceClient client = TripServiceClient.create(settings)) {
234+
response = client.searchTrips(request);
235+
}
226236

227237
for (Trip trip : response.getPage().getValues()) {
228238
System.out.printf("Trip Name: %s\n", trip.getName());
@@ -232,20 +242,24 @@ static void searchTrips() throws SignerInitializationException, IOException {
232242
}
233243
}
234244

235-
private static FleetEngineTokenProvider createMinter() throws SignerInitializationException {
236-
return AuthTokenMinter.builder()
237-
// Only the account for the server signer is needed in this example
238-
.setServerSigner(ImpersonatedSigner.create(OdrdConfiguration.SERVER_TOKEN_ACCOUNT))
239-
240-
// When the audience is not set, it defaults to https://fleetengine.googleapis.com/.
241-
// This is fine in the vast majority of cases.
242-
.setTokenFactory(
243-
new FleetEngineTokenFactory(
244-
FleetEngineTokenFactorySettings.builder()
245-
.setAudience(OdrdConfiguration.FLEET_ENGINE_AUDIENCE)
246-
.build()))
247-
248-
// Build the minter
249-
.build();
245+
private static FleetEngineTokenProvider getMinter() throws SignerInitializationException {
246+
// Only create one minter across all calls to Fleet Engine
247+
if (minter == null) {
248+
minter = AuthTokenMinter.builder()
249+
// Only the account for the server signer is needed in this example
250+
.setServerSigner(ImpersonatedSigner.create(OdrdConfiguration.SERVER_TOKEN_ACCOUNT))
251+
252+
// When the audience is not set, it defaults to https://fleetengine.googleapis.com/.
253+
// This is fine in the vast majority of cases.
254+
.setTokenFactory(
255+
new FleetEngineTokenFactory(
256+
FleetEngineTokenFactorySettings.builder()
257+
.setAudience(OdrdConfiguration.FLEET_ENGINE_AUDIENCE)
258+
.build()))
259+
260+
// Build the minter
261+
.build();
262+
}
263+
return minter;
250264
}
251265
}

sample/src/main/java/com/google/fleetengine/auth/sample/SampleApp.java

Lines changed: 65 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@
2020

2121
/** Sample app for auth library. */
2222
public final class SampleApp {
23+
private static final String ANSI_GREEN = "\u001B[32m";
24+
private static final String ANSI_RED = "\u001B[31m";
25+
private static final String ANSI_RESET = "\u001B[0m";
2326

2427
private SampleApp() {}
2528

2629
/** Entry point. */
2730
public static void main(String[] args) throws Throwable {
28-
System.out.println(
31+
while (true) {
32+
System.out.println(
2933
"\n\n\n=== Choose example: ===\n"
3034
+ "0. Validate Configured ODRD Roles\n"
3135
+ "1. Create Vehicle\n"
@@ -37,43 +41,67 @@ public static void main(String[] args) throws Throwable {
3741
+ "10. Validate Configured LMFS Roles\n"
3842
+ "11. Create Delivery Vehicle\n"
3943
+ "12. Create Task\n"
40-
+ "13. List Delivery Vehicles\n");
41-
Scanner scanner = new Scanner(System.in, UTF_8.name());
42-
int choice = scanner.nextInt();
44+
+ "13. List Delivery Vehicles\n"
45+
+ "----------------------------------------\n"
46+
+ "100. Run all commands\n");
47+
Scanner scanner = new Scanner(System.in, UTF_8.name());
48+
int choice = scanner.nextInt();
49+
switch (choice) {
50+
case 0:
51+
ValidateOdrdRoles.run();
52+
break;
53+
case 1:
54+
OdrdSampleCommands.createVehicle();
55+
break;
56+
case 2:
57+
OdrdSampleCommands.createTrip();
58+
break;
59+
case 3:
60+
OdrdSampleCommands.listVehicles();
61+
break;
62+
case 4:
63+
OdrdSampleCommands.searchVehicles();
64+
break;
65+
case 5:
66+
OdrdSampleCommands.searchTrips();
67+
break;
68+
case 10:
69+
ValidateLmfsRoles.run();
70+
break;
71+
case 11:
72+
LmfsSampleCommands.createDeliveryVehicle();
73+
break;
74+
case 12:
75+
LmfsSampleCommands.createTask();
76+
break;
77+
case 13:
78+
LmfsSampleCommands.listDeliveryVehicles();
79+
break;
80+
case 100:
81+
runAll();
82+
break;
83+
default:
84+
throw new IllegalArgumentException("Invalid choice provided.");
85+
}
86+
}
87+
}
4388

44-
switch (choice) {
45-
case 0:
46-
ValidateOdrdRoles.run();
47-
break;
48-
case 1:
49-
OdrdSampleCommands.createVehicle();
50-
break;
51-
case 2:
52-
OdrdSampleCommands.createTrip();
53-
break;
54-
case 3:
55-
OdrdSampleCommands.listVehicles();
56-
break;
57-
case 4:
58-
OdrdSampleCommands.searchVehicles();
59-
break;
60-
case 5:
61-
OdrdSampleCommands.searchTrips();
62-
break;
63-
case 10:
64-
ValidateLmfsRoles.run();
65-
break;
66-
case 11:
67-
LmfsSampleCommands.createDeliveryVehicle();
68-
break;
69-
case 12:
70-
LmfsSampleCommands.createTask();
71-
break;
72-
case 13:
73-
LmfsSampleCommands.listDeliveryVehicles();
74-
break;
75-
default:
76-
throw new IllegalArgumentException("Invalid choice provided.");
89+
private static void runAll() throws Throwable {
90+
try {
91+
ValidateOdrdRoles.run();
92+
OdrdSampleCommands.createVehicle();
93+
OdrdSampleCommands.createTrip();
94+
OdrdSampleCommands.listVehicles();
95+
OdrdSampleCommands.searchVehicles();
96+
OdrdSampleCommands.searchTrips();
97+
ValidateLmfsRoles.run();
98+
LmfsSampleCommands.createDeliveryVehicle();
99+
LmfsSampleCommands.createTask();
100+
LmfsSampleCommands.listDeliveryVehicles();
101+
} catch (Exception ex) {
102+
System.out.printf("%sRUN ALL FAILED, EXITING...%s\n", ANSI_RED, ANSI_RESET);
103+
throw ex;
77104
}
105+
System.out.printf("%sRUN ALL SUCCEEDED%s\n", ANSI_GREEN, ANSI_RESET);
78106
}
79107
}

0 commit comments

Comments
 (0)