You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "Ryan MacDowell (JIRA)" <ji...@apache.org> on 2016/09/07 05:47:20 UTC
[jira] [Updated] (JCLOUDS-1173) List method has different behavior
on different cloud providers
[ https://issues.apache.org/jira/browse/JCLOUDS-1173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ryan MacDowell updated JCLOUDS-1173:
------------------------------------
Description:
I'm seeing different behavior for the BlobStore list method of aws-s3 and transient. On aws-s3 the PageSet contains the directory itself and on azure and transient it does not.
The example below shows that transient gives a size of 1 and aws-s3 gives a size of 2 even though they are setup exactly the same.
{code:title=ListTest.java}
import org.jclouds.ContextBuilder;
import org.jclouds.blobstore.BlobStore;
import org.jclouds.blobstore.BlobStoreContext;
import org.jclouds.blobstore.domain.Blob;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
//Test for equals behavior
public class ListTest {
public static void main(String[] args) {
String containerName = "test.container";
String dataString = "testData";
String testDirectory = "testDirectory";
String blobName = "blob1";
AWSCredentials creds = new DefaultAWSCredentialsProviderChain().getCredentials();
//Setup the contexts
BlobStoreContext transientContext = ContextBuilder.newBuilder("transient")
.credentials(creds.getAWSAccessKeyId(), creds.getAWSSecretKey())
.build(BlobStoreContext.class);
BlobStoreContext awsS3Context = ContextBuilder.newBuilder("aws-s3")
.credentials(creds.getAWSAccessKeyId(), creds.getAWSSecretKey())
.build(BlobStoreContext.class);
//Setup the blobstores
BlobStore transientStore = transientContext.getBlobStore();
BlobStore awsStore = awsS3Context.getBlobStore();
//Setup the container
transientStore.createContainerInLocation(null, containerName);
awsStore.createContainerInLocation(null, containerName);
//Setup the directories
transientStore.createDirectory(containerName, testDirectory);
awsStore.createDirectory(containerName, testDirectory);
//setup the blobs
Blob transientBlob = transientStore.blobBuilder(testDirectory +"/" + blobName).build();
Blob awsBlob = awsStore.blobBuilder(testDirectory +"/" + blobName).build();
//create the payloads
byte[] transientPayload = dataString.getBytes();
byte[] awsPayload = dataString.getBytes();
//set the payloads
transientBlob.setPayload(transientPayload);
awsBlob.setPayload(awsPayload);
//Upload the blobs
transientStore.putBlob(containerName, transientBlob);
awsStore.putBlob(containerName, awsBlob);
System.out.println("Directory size should be the same but is not: transient + " + transientStore.list(containerName).size()
+ ", aws = " + awsStore.list(containerName).size());
}
}
{code}
was:
I'm seeing different behavior for the BlobStore list method of aws-s3 and transient. On aws-s3 the PageSet contains the directory itself and on azure and transient it does not.
The example below shows that transient gives a size of 1 and aws-s3 gives a size of 2 even though they are setup exactly the same.
{code:title=ListTest.java}
import org.jclouds.ContextBuilder;
import org.jclouds.blobstore.BlobStore;
import org.jclouds.blobstore.BlobStoreContext;
import org.jclouds.blobstore.domain.Blob;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
//Test for equals behavior
public class ListTest {
public static void main(String[] args) {
String containerName = "pega.engineering.ci.automatedtesting";
String dataString = "testData";
String testDirectory = "testDirectory";
String blobName = "blob1";
AWSCredentials creds = new DefaultAWSCredentialsProviderChain().getCredentials();
//Setup the contexts
BlobStoreContext transientContext = ContextBuilder.newBuilder("transient")
.credentials(creds.getAWSAccessKeyId(), creds.getAWSSecretKey())
.build(BlobStoreContext.class);
BlobStoreContext awsS3Context = ContextBuilder.newBuilder("aws-s3")
.credentials(creds.getAWSAccessKeyId(), creds.getAWSSecretKey())
.build(BlobStoreContext.class);
//Setup the blobstores
BlobStore transientStore = transientContext.getBlobStore();
BlobStore awsStore = awsS3Context.getBlobStore();
//Setup the container
transientStore.createContainerInLocation(null, containerName);
awsStore.createContainerInLocation(null, containerName);
//Setup the directories
transientStore.createDirectory(containerName, testDirectory);
awsStore.createDirectory(containerName, testDirectory);
//setup the blobs
Blob transientBlob = transientStore.blobBuilder(testDirectory +"/" + blobName).build();
Blob awsBlob = awsStore.blobBuilder(testDirectory +"/" + blobName).build();
//create the payloads
byte[] transientPayload = dataString.getBytes();
byte[] awsPayload = dataString.getBytes();
//set the payloads
transientBlob.setPayload(transientPayload);
awsBlob.setPayload(awsPayload);
//Upload the blobs
transientStore.putBlob(containerName, transientBlob);
awsStore.putBlob(containerName, awsBlob);
System.out.println("Directory size should be the same but is not: transient + " + transientStore.list(containerName).size()
+ ", aws = " + awsStore.list(containerName).size());
}
}
{code}
> List method has different behavior on different cloud providers
> ---------------------------------------------------------------
>
> Key: JCLOUDS-1173
> URL: https://issues.apache.org/jira/browse/JCLOUDS-1173
> Project: jclouds
> Issue Type: Bug
> Components: jclouds-blobstore
> Affects Versions: 1.9.2
> Reporter: Ryan MacDowell
>
> I'm seeing different behavior for the BlobStore list method of aws-s3 and transient. On aws-s3 the PageSet contains the directory itself and on azure and transient it does not.
> The example below shows that transient gives a size of 1 and aws-s3 gives a size of 2 even though they are setup exactly the same.
> {code:title=ListTest.java}
> import org.jclouds.ContextBuilder;
> import org.jclouds.blobstore.BlobStore;
> import org.jclouds.blobstore.BlobStoreContext;
> import org.jclouds.blobstore.domain.Blob;
> import com.amazonaws.auth.AWSCredentials;
> import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
> //Test for equals behavior
> public class ListTest {
> public static void main(String[] args) {
> String containerName = "test.container";
> String dataString = "testData";
> String testDirectory = "testDirectory";
> String blobName = "blob1";
> AWSCredentials creds = new DefaultAWSCredentialsProviderChain().getCredentials();
> //Setup the contexts
> BlobStoreContext transientContext = ContextBuilder.newBuilder("transient")
> .credentials(creds.getAWSAccessKeyId(), creds.getAWSSecretKey())
> .build(BlobStoreContext.class);
> BlobStoreContext awsS3Context = ContextBuilder.newBuilder("aws-s3")
> .credentials(creds.getAWSAccessKeyId(), creds.getAWSSecretKey())
> .build(BlobStoreContext.class);
> //Setup the blobstores
> BlobStore transientStore = transientContext.getBlobStore();
> BlobStore awsStore = awsS3Context.getBlobStore();
> //Setup the container
> transientStore.createContainerInLocation(null, containerName);
> awsStore.createContainerInLocation(null, containerName);
> //Setup the directories
> transientStore.createDirectory(containerName, testDirectory);
> awsStore.createDirectory(containerName, testDirectory);
> //setup the blobs
> Blob transientBlob = transientStore.blobBuilder(testDirectory +"/" + blobName).build();
> Blob awsBlob = awsStore.blobBuilder(testDirectory +"/" + blobName).build();
> //create the payloads
> byte[] transientPayload = dataString.getBytes();
> byte[] awsPayload = dataString.getBytes();
> //set the payloads
> transientBlob.setPayload(transientPayload);
> awsBlob.setPayload(awsPayload);
> //Upload the blobs
> transientStore.putBlob(containerName, transientBlob);
> awsStore.putBlob(containerName, awsBlob);
> System.out.println("Directory size should be the same but is not: transient + " + transientStore.list(containerName).size()
> + ", aws = " + awsStore.list(containerName).size());
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)