Skip to content

Commit 0d2cd39

Browse files
author
Ajay Kannan
committed
WIP (includes Arie's verbal comments)
1 parent 55f4fbc commit 0d2cd39

9 files changed

Lines changed: 38 additions & 32 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ import com.google.gcloud.resourcemanager.ResourceManagerOptions;
201201
import java.util.Iterator;
202202
203203
ResourceManager resourceManager = ResourceManagerOptions.defaultInstance().service();
204-
ProjectInfo myProject = resourceManager.get("some-project-id-that-I-own");
204+
ProjectInfo myProject = resourceManager.get("some-project-id"); // Use an existing project's ID
205205
ProjectInfo newProjectInfo = resourceManager.replace(myProject.toBuilder()
206206
.addLabel("launch-status", "in-development").build());
207207
System.out.println("Updated the labels of project " + newProjectInfo.projectId()

TESTING.md

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
## gcloud-java tools for testing
22

3-
This library provides tools to help write tests for code that uses gcloud-java services.
3+
This library provides tools to help write tests for code that uses the following gcloud-java services:
4+
5+
- [Datastore] (#testing-code-that-uses-datastore)
6+
- [Storage] (#testing-code-that-uses-storage)
7+
- [Resource Manager] (#testing-code-that-uses-resource-manager)
48

59
### Testing code that uses Datastore
610

@@ -85,8 +89,7 @@ You can test against a temporary local Resource Manager by following these steps
8589
2. In your program, create and use a Resource Manager service object whose host is set to `localhost` at the appropriate port. For example:
8690

8791
```java
88-
ResourceManager resourceManager = ResourceManagerOptions.builder()
89-
.host("http://localhost:" + helper.port()).build().service();
92+
ResourceManager resourceManager = LocalResourceManagerHelper.options().service();
9093
```
9194

9295
3. Run your tests.
@@ -99,17 +102,5 @@ You can test against a temporary local Resource Manager by following these steps
99102

100103
This method will block until the server thread has been terminated.
101104

102-
#### On a remote machine
103-
104-
You can test against a remote Resource Manager emulator as well. To do this, set the host to the hostname of the remote machine, like the example below.
105-
106-
```java
107-
ResourceManager resourceManager = ResourceManagerOptions.builder()
108-
.host("http://<hostname of machine>:<port>").build();
109-
```
110-
111-
Note that the remote Resource Manager emulator must be running before your tests are run.
112-
113-
114105

115106
[cloud-platform-storage-authentication]:https://cloud.google.com/storage/docs/authentication?hl=en#service_accounts

gcloud-java-resourcemanager/README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,22 @@ Java idiomatic client for [Google Cloud Resource Manager] (https://cloud.google.
1717
1818
Quickstart
1919
----------
20-
This library is currently under development and will be available soon!
21-
<!--TODO(ajaykannan): add in pom.xml snippet once gcloud-java-resourcemanager becomes available on maven -->
20+
If you are using Maven, add this to your pom.xml file
21+
```xml
22+
<dependency>
23+
<groupId>com.google.gcloud</groupId>
24+
<artifactId>gcloud-java-resourcemanager</artifactId>
25+
<version>0.1.0</version>
26+
</dependency>
27+
```
28+
If you are using Gradle, add this to your dependencies
29+
```Groovy
30+
compile 'com.google.gcloud:gcloud-java-resourcemanager:jar:0.1.0'
31+
```
32+
If you are using SBT, add this to your dependencies
33+
```Scala
34+
libraryDependencies += "com.google.gcloud" % "gcloud-java-resourcemanager" % "0.1.0"
35+
```
2236

2337
<!-- TODO(ajaykannan): once the API becomes usable, make an example application
2438
Example Application
@@ -38,7 +52,7 @@ Google [Cloud Resource Manager][cloud-resourcemanager] provides a programmatic w
3852
* Create new projects.
3953
* Update existing projects.
4054
* Delete projects.
41-
* Undelete, or recover, projects that you don't want to delete.
55+
* Undelete projects that you don't want to delete.
4256

4357
Google Cloud Resource Manager is currently in beta and may occasionally make backwards incompatible changes.
4458

gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/ProjectInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ com.google.api.services.cloudresourcemanager.model.Project toPb() {
334334
static ProjectInfo fromPb(com.google.api.services.cloudresourcemanager.model.Project projectPb) {
335335
ProjectInfo.Builder builder =
336336
ProjectInfo.builder(projectPb.getProjectId()).projectNumber(projectPb.getProjectNumber());
337-
if (projectPb.getName() != null) {
337+
if (projectPb.getName() != null && !projectPb.getName().equals("Unnamed")) {
338338
builder.name(projectPb.getName());
339339
}
340340
if (projectPb.getLabels() != null) {

gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/testing/LocalResourceManagerHelper.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.google.common.collect.ImmutableMap;
1313
import com.google.common.collect.ImmutableSet;
1414
import com.google.common.io.ByteStreams;
15+
import com.google.gcloud.resourcemanager.ResourceManagerOptions;
1516

1617
import com.sun.net.httpserver.Headers;
1718
import com.sun.net.httpserver.HttpExchange;
@@ -524,10 +525,10 @@ public static LocalResourceManagerHelper create() {
524525
}
525526

526527
/**
527-
* Returns the port that the LocalResourceManagerHelper listens to for requests.
528+
* Returns a ResourceManagerOptions instance that sets the host to use the mock server.
528529
*/
529-
public int port() {
530-
return port;
530+
public ResourceManagerOptions options() {
531+
return ResourceManagerOptions.builder().host("http://localhost:" + port).build();
531532
}
532533

533534
/**

gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/DefaultResourceManagerRpc.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static com.google.gcloud.spi.ResourceManagerRpc.Option.FILTER;
55
import static com.google.gcloud.spi.ResourceManagerRpc.Option.PAGE_SIZE;
66
import static com.google.gcloud.spi.ResourceManagerRpc.Option.PAGE_TOKEN;
7+
import static java.net.HttpURLConnection.HTTP_FORBIDDEN;
78

89
import com.google.api.client.googleapis.json.GoogleJsonError;
910
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
@@ -81,7 +82,7 @@ public Project get(String projectId, Map<Option, ?> options) throws ResourceMana
8182
.execute();
8283
} catch (IOException ex) {
8384
ResourceManagerException translated = translate(ex);
84-
if (translated.code() == 403) {
85+
if (translated.code() == HTTP_FORBIDDEN) {
8586
return null; // Project not found
8687
} else {
8788
throw translated;

gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/LocalResourceManagerHelperTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,8 @@ public class LocalResourceManagerHelperTest {
3232
private static final Map<ResourceManagerRpc.Option, ?> EMPTY_RPC_OPTIONS = ImmutableMap.of();
3333
private static final LocalResourceManagerHelper RESOURCE_MANAGER_HELPER =
3434
LocalResourceManagerHelper.create();
35-
private static final ResourceManagerRpc rpc = new DefaultResourceManagerRpc(
36-
ResourceManagerOptions.builder()
37-
.host("http://localhost:" + RESOURCE_MANAGER_HELPER.port())
38-
.build());
35+
private static final ResourceManagerRpc rpc =
36+
new DefaultResourceManagerRpc(RESOURCE_MANAGER_HELPER.options());
3937
private static final com.google.api.services.cloudresourcemanager.model.Project PARTIAL_PROJECT =
4038
new com.google.api.services.cloudresourcemanager.model.Project().setProjectId(
4139
"partial-project");

gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ProjectInfoTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public class ProjectInfoTest {
4545
.parent(PARENT)
4646
.build();
4747
private static final ProjectInfo PARTIAL_PROJECT_INFO = ProjectInfo.builder(PROJECT_ID).build();
48+
private static final ProjectInfo UNNAMED_PROJECT_FROM_LIST =
49+
PARTIAL_PROJECT_INFO.toBuilder().name("Unnamed").build();
4850

4951
@Test
5052
public void testBuilder() {
@@ -73,6 +75,7 @@ public void testToBuilder() {
7375
public void testToAndFromPb() {
7476
compareProjects(FULL_PROJECT_INFO, ProjectInfo.fromPb(FULL_PROJECT_INFO.toPb()));
7577
compareProjects(PARTIAL_PROJECT_INFO, ProjectInfo.fromPb(PARTIAL_PROJECT_INFO.toPb()));
78+
compareProjects(PARTIAL_PROJECT_INFO, ProjectInfo.fromPb(UNNAMED_PROJECT_FROM_LIST.toPb()));
7679
}
7780

7881
@Test

gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/ResourceManagerImplTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,8 @@ public class ResourceManagerImplTest {
4848

4949
private static final LocalResourceManagerHelper RESOURCE_MANAGER_HELPER =
5050
LocalResourceManagerHelper.create();
51-
private static final ResourceManager RESOURCE_MANAGER = ResourceManagerOptions.builder()
52-
.host("http://localhost:" + RESOURCE_MANAGER_HELPER.port())
53-
.build()
54-
.service();
51+
private static final ResourceManager RESOURCE_MANAGER =
52+
RESOURCE_MANAGER_HELPER.options().service();
5553
private static final ProjectGetOption GET_FIELDS =
5654
ProjectGetOption.fields(ProjectField.NAME, ProjectField.CREATE_TIME);
5755
private static final ProjectListOption LIST_FIELDS =

0 commit comments

Comments
 (0)