static Metadata fromPb(com.google.api.services.compute.model.Metadata metadataPb) { Builder builder = newBuilder(); if (metadataPb.getItems() != null) { Map<String, String> metadataValues = Maps.newHashMapWithExpectedSize(metadataPb.getItems().size()); for (com.google.api.services.compute.model.Metadata.Items item : metadataPb.getItems()) { metadataValues.put(item.getKey(), item.getValue()); } builder.setValues(metadataValues); } return builder.setFingerprint(metadataPb.getFingerprint()).build(); } }
@Test public void testSetMetadataFromMap_Null() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Map<String, String> metadataMap = ImmutableMap.of("k", "v"); Metadata metadata = Metadata.newBuilder().setValues(metadataMap).setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(null); replay(compute); initializeInstance(); assertNull(instance.setMetadata(metadataMap)); }
@Test public void testSetMetadata_Null() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Metadata metadata = Metadata.newBuilder().add("k", "v").setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(null); replay(compute); initializeInstance(); assertNull(instance.setMetadata(metadata)); }
@Test public void testSetMetadataWithOptions_Operation() { Capture<Map<ComputeRpc.Option, Object>> capturedOptions = Capture.newInstance(); Metadata metadata = Metadata.newBuilder().add("key", "value").setFingerprint("fingerprint").build(); EasyMock.expect( computeRpcMock.setMetadata( eq(INSTANCE_ID.getZone()), eq(INSTANCE_ID.getInstance()), eq(metadata.toPb()), capture(capturedOptions))) .andReturn(zoneOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); Operation operation = compute.setMetadata(INSTANCE_ID, metadata, OPERATION_OPTION_FIELDS); String selector = (String) capturedOptions.getValue().get(OPERATION_OPTION_FIELDS.getRpcOption()); assertTrue(selector.contains("selfLink")); assertTrue(selector.contains("id")); assertTrue(selector.contains("description")); assertEquals(23, selector.length()); assertEquals(zoneOperation, operation); }
@Test public void testBuilder() { assertEquals(ImmutableMap.of("key1", "value1", "key2", "value2"), METADATA.getValues()); assertNull(METADATA.getFingerprint()); Metadata metadata = Metadata.newBuilder() .setValues(ImmutableMap.of("key1", "value1", "key2", "value2")) .build(); assertEquals(ImmutableMap.of("key1", "value1", "key2", "value2"), metadata.getValues()); assertNull(metadata.getFingerprint()); metadata = Metadata.newBuilder() .setValues(ImmutableMap.of("key1", "value1", "key2", "value2")) .setFingerprint("fingerprint") .build(); assertEquals(ImmutableMap.of("key1", "value1", "key2", "value2"), metadata.getValues()); assertEquals("fingerprint", metadata.getFingerprint()); }
@Test public void testSetMetadata_Null() { Metadata metadata = Metadata.newBuilder().add("key", "value").setFingerprint("fingerprint").build(); EasyMock.expect( computeRpcMock.setMetadata( INSTANCE_ID.getZone(), INSTANCE_ID.getInstance(), metadata.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(null); EasyMock.replay(computeRpcMock); compute = options.getService(); assertNull(compute.setMetadata(INSTANCE_ID, metadata)); }
@Test public void testSetMetadataFromMapWithOptions() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Map<String, String> metadataMap = ImmutableMap.of("k", "v"); Metadata metadata = Metadata.newBuilder().setValues(metadataMap).setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata, Compute.OperationOption.fields())) .andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadataMap, Compute.OperationOption.fields())); }
@Test public void testSetMetadata() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Metadata metadata = Metadata.newBuilder().add("k", "v").setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadata)); }
@Test public void testSetMetadataWithOptions() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Metadata metadata = Metadata.newBuilder().add("k", "v").setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata, Compute.OperationOption.fields())) .andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadata, Compute.OperationOption.fields())); }
@Test public void testSetMetadataFromMap() throws Exception { initializeExpectedInstance(2); expect(compute.getOptions()).andReturn(mockOptions); Operation operation = new Operation.Builder(serviceMockReturnsOptions) .setOperationId(ZoneOperationId.of("project", "op")) .build(); Map<String, String> metadataMap = ImmutableMap.of("k", "v"); Metadata metadata = Metadata.newBuilder().setValues(metadataMap).setFingerprint("fingerprint").build(); expect(compute.setMetadata(INSTANCE_ID, metadata)).andReturn(operation); replay(compute); initializeInstance(); assertSame(operation, instance.setMetadata(metadataMap)); }
@Test public void testSetMetadata_Operation() { Metadata metadata = Metadata.newBuilder().add("key", "value").setFingerprint("fingerprint").build(); EasyMock.expect( computeRpcMock.setMetadata( INSTANCE_ID.getZone(), INSTANCE_ID.getInstance(), metadata.toPb(), EMPTY_RPC_OPTIONS)) .andReturn(zoneOperation.toPb()); EasyMock.replay(computeRpcMock); compute = options.getService(); assertEquals(zoneOperation, compute.setMetadata(INSTANCE_ID, metadata)); }
/** * Returns a {@code Metadata} object given the the metadata as a map. The total size of all keys * and values must be less than 512 KB. Keys must conform to the following regexp: {@code * [a-zA-Z0-9-_]+}, and be less than 128 bytes in length. This is reflected as part of a URL in * the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other * metadata keys for the project. Values must be less than or equal to 32768 bytes. */ public static Metadata of(Map<String, String> values) { return newBuilder().setValues(values).build(); }
@Test public void testToAndFromPb() { compareMetadata(METADATA, Metadata.fromPb(METADATA.toPb())); Metadata metadata = Metadata.newBuilder() .setValues(ImmutableMap.of("key1", "value1", "key2", "value2")) .setFingerprint("fingerprint") .build(); compareMetadata(metadata, Metadata.fromPb(metadata.toPb())); }
/** * Sets the metadata for this instance, fingerprint value is taken from this instance's {@code * tags().fingerprint()}. * * @return a zone operation if the set request was issued correctly, {@code null} if the instance * was not found * @throws ComputeException upon failure */ public Operation setMetadata(Map<String, String> metadata, OperationOption... options) { return setMetadata(getMetadata().toBuilder().setValues(metadata).build(), options); }