Updated Branches:
  refs/heads/1.6.x c7e936926 -> cbc533bec

fix for JCLOUDS-360, replace platform-dependent assumption that nanosecond 
resolution ticker uses epoch 1970 as origin with guaranteed behaviour at 
millisecond-level resolution of System.currentTimeMillis


Project: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-google/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-google/commit/cbc533be
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-google/tree/cbc533be
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-google/diff/cbc533be

Branch: refs/heads/1.6.x
Commit: cbc533becacb14302ee62051841b13ff59713f53
Parents: c7e9369
Author: Alex Heneveld <[email protected]>
Authored: Tue Oct 29 22:25:27 2013 -0700
Committer: Andrew Bayer <[email protected]>
Committed: Wed Oct 30 11:36:01 2013 -0400

----------------------------------------------------------------------
 .../internal/BaseGoogleComputeEngineExpectTest.java  | 14 +++++---------
 .../oauth/v2/functions/BuildTokenRequest.java        | 15 +++++++++------
 2 files changed, 14 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-google/blob/cbc533be/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
index bb2eec1..1c360f2 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
@@ -53,13 +53,14 @@ import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.io.Payload;
 import org.jclouds.oauth.v2.OAuthConstants;
+import org.jclouds.oauth.v2.config.OAuthProperties;
 import org.jclouds.rest.internal.BaseRestApiExpectTest;
 import org.jclouds.ssh.SshKeys;
 import org.jclouds.util.Strings2;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Supplier;
-import com.google.common.base.Ticker;
+import com.google.common.base.Suppliers;
 import com.google.inject.Binder;
 import com.google.inject.Module;
 import com.google.inject.TypeLiteral;
@@ -101,13 +102,8 @@ public class BaseGoogleComputeEngineExpectTest<T> extends 
BaseRestApiExpectTest<
       return new Module() {
          @Override
          public void configure(Binder binder) {
-            // predictable time
-            binder.bind(Ticker.class).toInstance(new Ticker() {
-               @Override
-               public long read() {
-                  return 0;
-               }
-            });
+            // Predicatable time
+            binder.bind(new TypeLiteral<Supplier<Long>>() 
{}).toInstance(Suppliers.ofInstance(0L));
             try {
                KeyFactory keyfactory = KeyFactory.getInstance("RSA");
                PrivateKey privateKey = 
keyfactory.generatePrivate(privateKeySpec(newStringPayload
@@ -149,7 +145,7 @@ public class BaseGoogleComputeEngineExpectTest<T> extends 
BaseRestApiExpectTest<
    protected Properties setupProperties() {
       Properties props = super.setupProperties();
       // use no sig algorithm for expect tests (means no credential is 
required either)
-      props.put("jclouds.oauth.signature-or-mac-algorithm", 
OAuthConstants.NO_ALGORITHM);
+      props.put(OAuthProperties.SIGNATURE_OR_MAC_ALGORITHM, 
OAuthConstants.NO_ALGORITHM);
       return props;
    }
 

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-google/blob/cbc533be/oauth/src/main/java/org/jclouds/oauth/v2/functions/BuildTokenRequest.java
----------------------------------------------------------------------
diff --git 
a/oauth/src/main/java/org/jclouds/oauth/v2/functions/BuildTokenRequest.java 
b/oauth/src/main/java/org/jclouds/oauth/v2/functions/BuildTokenRequest.java
index d10b9a9..1984028 100644
--- a/oauth/src/main/java/org/jclouds/oauth/v2/functions/BuildTokenRequest.java
+++ b/oauth/src/main/java/org/jclouds/oauth/v2/functions/BuildTokenRequest.java
@@ -23,7 +23,6 @@ import static 
org.jclouds.oauth.v2.config.OAuthProperties.SCOPES;
 import static 
org.jclouds.oauth.v2.config.OAuthProperties.SIGNATURE_OR_MAC_ALGORITHM;
 
 import java.util.Map;
-import java.util.concurrent.TimeUnit;
 
 import javax.inject.Singleton;
 
@@ -39,7 +38,6 @@ import org.jclouds.rest.internal.GeneratedHttpRequest;
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.Supplier;
-import com.google.common.base.Ticker;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.reflect.Invokable;
 import com.google.inject.Inject;
@@ -71,10 +69,15 @@ public class BuildTokenRequest implements 
Function<GeneratedHttpRequest, TokenRe
    @Named(SCOPES)
    protected String globalScopes = null;
 
+   // injectable so expect tests can override with a predictable value
    @Inject(optional = true)
-   public Ticker ticker = Ticker.systemTicker();
-
-
+   protected Supplier<Long> timeSourceMillisSinceEpoch = new Supplier<Long>() {
+      @Override
+      public Long get() {
+         return System.currentTimeMillis();
+      }
+   };
+   
    @Inject
    public BuildTokenRequest(@Named(AUDIENCE) String assertionTargetDescription,
                             @Named(SIGNATURE_OR_MAC_ALGORITHM) String 
signatureAlgorithm,
@@ -89,7 +92,7 @@ public class BuildTokenRequest implements 
Function<GeneratedHttpRequest, TokenRe
 
    @Override
    public TokenRequest apply(GeneratedHttpRequest request) {
-      long now = TimeUnit.SECONDS.convert(ticker.read(), TimeUnit.NANOSECONDS);
+      long now = timeSourceMillisSinceEpoch.get() / 1000;
 
       // fetch the token
       Header header = new Header.Builder()

Reply via email to