diff --git a/dev/cosbench-api/src/com/intel/cosbench/api/storage/NoneStorage.java b/dev/cosbench-api/src/com/intel/cosbench/api/storage/NoneStorage.java index 053f78e..b0b6815 100644 --- a/dev/cosbench-api/src/com/intel/cosbench/api/storage/NoneStorage.java +++ b/dev/cosbench-api/src/com/intel/cosbench/api/storage/NoneStorage.java @@ -62,6 +62,12 @@ public void setAuthContext(AuthContext info) { /* empty */ } + @Override + public AuthContext getAuthContext() { + // TODO Auto-generated method stub + return null; + } + @Override public void dispose() { /* empty */ diff --git a/dev/cosbench-api/src/com/intel/cosbench/api/storage/StorageAPI.java b/dev/cosbench-api/src/com/intel/cosbench/api/storage/StorageAPI.java index 425a1d6..7b4c2a0 100644 --- a/dev/cosbench-api/src/com/intel/cosbench/api/storage/StorageAPI.java +++ b/dev/cosbench-api/src/com/intel/cosbench/api/storage/StorageAPI.java @@ -72,6 +72,11 @@ public interface StorageAPI { */ public void setAuthContext(AuthContext info); + /** + * @return AuthContext instance associated with this Storage-API + */ + public AuthContext getAuthContext(); + /** * Downloads an object from a container. * diff --git a/dev/cosbench-controller/src/com/intel/cosbench/controller/service/WorkloadProcessor.java b/dev/cosbench-controller/src/com/intel/cosbench/controller/service/WorkloadProcessor.java index 8b9e0c8..00e2c5f 100644 --- a/dev/cosbench-controller/src/com/intel/cosbench/controller/service/WorkloadProcessor.java +++ b/dev/cosbench-controller/src/com/intel/cosbench/controller/service/WorkloadProcessor.java @@ -18,6 +18,7 @@ package com.intel.cosbench.controller.service; import static com.intel.cosbench.model.WorkloadState.*; +import static java.util.concurrent.TimeUnit.*; import java.util.*; import java.util.concurrent.*; @@ -165,21 +166,47 @@ private void processWorkload() throws InterruptedException { workloadContext.setState(FINISHED); } + private static String millisToHMS(long millis) { + + long hrs = MILLISECONDS.toHours(millis) % 24; + long min = MILLISECONDS.toMinutes(millis) % 60; + long sec = MILLISECONDS.toSeconds(millis) % 60; + + return hrs + ":" + min + "::" + sec; + } + private void runStage(StageContext stageContext) throws InterruptedException { String id = stageContext.getId(); int closuredelay = stageContext.getStage().getClosuredelay(); + + String stageName = stageContext.getStage().getName(); + String work0Type = stageContext.getStage().getWorks().get(0).getType(); + LOGGER.info("begin to run stage {}", id); + + LOGGER.info("============================================"); + LOGGER.info("START WORK: {}", stageName); + + long startStamp = System.currentTimeMillis(); + workloadContext.setCurrentStage(stageContext); - if (stageContext.getStage().getName().equals("delay") - && closuredelay > 0) { + if (stageName.equals("delay") && closuredelay > 0) { executeDelay(stageContext, closuredelay); } else { executeStage(stageContext); - if (closuredelay > 0) + + long elapsedTime = System.currentTimeMillis() - startStamp; + + LOGGER.info("END WORK: {}, Time elapsed: {}", stageName, millisToHMS(elapsedTime)); + LOGGER.info("============================================"); + LOGGER.info(""); + + if(closuredelay > 0) executeDelay(stageContext, closuredelay); - } - LOGGER.info("successfully ran stage {}", id); - } + } + + LOGGER.info("successfully ran stage {}", id); + } private void executeDelay(StageContext stageContext, int closuredelay) throws InterruptedException { diff --git a/dev/cosbench-driver/src/com/intel/cosbench/driver/model/WorkerRegistry.java b/dev/cosbench-driver/src/com/intel/cosbench/driver/model/WorkerRegistry.java index 9585897..f954ab3 100644 --- a/dev/cosbench-driver/src/com/intel/cosbench/driver/model/WorkerRegistry.java +++ b/dev/cosbench-driver/src/com/intel/cosbench/driver/model/WorkerRegistry.java @@ -29,4 +29,7 @@ public WorkerContext[] getAllWorkers() { return getAllItems().toArray(new WorkerContext[getSize()]); } + public WorkerContext getWorkerByIndex(int index) { + return getItem(index); + } } diff --git a/dev/cosbench-driver/src/com/intel/cosbench/driver/service/MissionHandler.java b/dev/cosbench-driver/src/com/intel/cosbench/driver/service/MissionHandler.java index ecf80f8..a38f5e1 100644 --- a/dev/cosbench-driver/src/com/intel/cosbench/driver/service/MissionHandler.java +++ b/dev/cosbench-driver/src/com/intel/cosbench/driver/service/MissionHandler.java @@ -26,6 +26,7 @@ import org.apache.commons.lang.StringUtils; import com.intel.cosbench.api.auth.*; +import com.intel.cosbench.api.context.AuthContext; import com.intel.cosbench.api.storage.*; import com.intel.cosbench.config.*; import com.intel.cosbench.config.castor.CastorConfigTools; @@ -241,12 +242,35 @@ public void login() { private void performLogin() { missionContext.setState(AUTHING); - List agents = createAuthAgents(); + + // Use worker 0 for authentication (and use the same token for other workers) + WorkerContext worker0 = missionContext.getWorkerRegistry().getWorkerByIndex(0); + List agents = createAuthAgentFromContext(worker0); executeAgents(agents, 0); + + AuthContext authContext = worker0.getStorageApi().getAuthContext(); + setAllWorkersAuthContext(authContext); + missionContext.setState(AUTHED); } - private List createAuthAgents() { + private void setAllWorkersAuthContext(AuthContext authContext) { + for (WorkerContext workerContext : missionContext.getWorkerRegistry()) + workerContext.getStorageApi().setAuthContext(authContext); + } + + /*** + * Returns Size 1 list of Agents + * @param workerContext to create Agent for + */ + private List createAuthAgentFromContext(WorkerContext workerContext) { + List agents = new ArrayList(); + agents.add(Agents.newAuthAgent(retry, workerContext)); + return agents; + } + + @SuppressWarnings("unused") + private List createAuthAgents() { List agents = new ArrayList(); for (WorkerContext workerContext : missionContext.getWorkerRegistry()) agents.add(Agents.newAuthAgent(retry, workerContext)); diff --git a/dev/cosbench-librados/.classpath b/dev/cosbench-librados/.classpath index 3c944f7..03e9341 100644 --- a/dev/cosbench-librados/.classpath +++ b/dev/cosbench-librados/.classpath @@ -5,5 +5,10 @@ + + + + + diff --git a/dev/cosbench-librados/.project b/dev/cosbench-librados/.project index b050900..a07eaf6 100644 --- a/dev/cosbench-librados/.project +++ b/dev/cosbench-librados/.project @@ -4,6 +4,12 @@ cosbench + cosbench-api + cosbench-config + cosbench-core + cosbench-http + cosbench-log + cosbench-log4j diff --git a/dev/cosbench-librados/build.properties b/dev/cosbench-librados/build.properties index d110360..e9dc79e 100644 --- a/dev/cosbench-librados/build.properties +++ b/dev/cosbench-librados/build.properties @@ -1,4 +1,5 @@ -source.. = src/ +source.. = src/,\ + test/ output.. = bin/ bin.includes = META-INF/,\ rados-0.1.1.jar,\ diff --git a/dev/cosbench-swift/src/com/intel/cosbench/api/swift/SwiftStorage.java b/dev/cosbench-swift/src/com/intel/cosbench/api/swift/SwiftStorage.java index 5b0ba04..3328572 100644 --- a/dev/cosbench-swift/src/com/intel/cosbench/api/swift/SwiftStorage.java +++ b/dev/cosbench-swift/src/com/intel/cosbench/api/swift/SwiftStorage.java @@ -84,12 +84,25 @@ public void setAuthContext(AuthContext info) { client.init(token, storage_url); } catch (Exception e) { throw new StorageException(e); - } - logger.debug("using auth token: {}, storage url: {}", token, storage_url); - } - - @Override - public void dispose() { + } + logger.debug("using auth token: {}, storage url: {}", token, storage_url); + } + + @Override + public AuthContext getAuthContext() { + String token = client.getAuthToken(); + String storage_url = client.getStorageURL(); + + AuthContext info = new AuthContext(); + info.put(AUTH_TOKEN_KEY, token); + info.put(STORAGE_URL_KEY, storage_url); + + logger.debug("returned auth token: {}, storage url: {}", token, storage_url); + return info; + } + + @Override + public void dispose() { super.dispose(); client.dispose(); } diff --git a/dev/cosbench-swift/src/com/intel/cosbench/client/swift/SwiftClient.java b/dev/cosbench-swift/src/com/intel/cosbench/client/swift/SwiftClient.java index f60ece5..3146a88 100644 --- a/dev/cosbench-swift/src/com/intel/cosbench/client/swift/SwiftClient.java +++ b/dev/cosbench-swift/src/com/intel/cosbench/client/swift/SwiftClient.java @@ -29,6 +29,7 @@ import org.apache.http.entity.*; import com.intel.cosbench.client.http.HttpClientUtil; +import com.intel.cosbench.log.*; public class SwiftClient { @@ -119,13 +120,20 @@ public void createContainer(String container) throws IOException, SwiftException { SwiftResponse response = null; try { + Logger logger = LogFactory.getSystemLogger(); + logger.info("Creating container with auth_token " + authToken); + method = HttpClientUtil.makeHttpPut(getContainerPath(container)); method.setHeader(X_AUTH_TOKEN, authToken); response = new SwiftResponse(client.execute(method)); - if (response.getStatusCode() == SC_CREATED) + if (response.getStatusCode() == SC_CREATED) { + logger.info("SUCCESS"); return; - if (response.getStatusCode() == SC_ACCEPTED) + } + if (response.getStatusCode() == SC_ACCEPTED) { + logger.info("SUCCESS"); return; + } throw new SwiftException("unexpected return from server", response.getResponseHeaders(), response.getStatusLine()); } finally { diff --git a/pack.sh b/pack.sh old mode 100644 new mode 100755