You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ab...@apache.org on 2013/10/30 16:43:28 UTC

git commit: fix for JCLOUDS-360

Updated Branches:
  refs/heads/1.6.x 1d551e91d -> 265240074


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

Contributed by Alex Heneveld


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

Branch: refs/heads/1.6.x
Commit: 26524007424be02ed129578b24e7d55bfb89ab70
Parents: 1d551e9
Author: Andrew Bayer <an...@gmail.com>
Authored: Wed Oct 30 11:42:27 2013 -0400
Committer: Andrew Bayer <an...@gmail.com>
Committed: Wed Oct 30 11:42:27 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/blob/26524007/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/blob/26524007/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()