
net.snowflake.client.SnowflakeDriverTest Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package net.snowflake.client;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.GetObjectMetadataRequest;
import com.amazonaws.services.s3.model.ObjectMetadata;
import net.snowflake.client.jdbc.SnowflakeDriver;
import java.io.File;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author jhuang
*/
public class SnowflakeDriverTest {
public SnowflakeDriverTest() {
}
@BeforeClass
public static void setUpClass()
{
}
@AfterClass
public static void tearDownClass()
{
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
//@Test
public void testGetObjectMetadata()
{
AmazonS3Client s3Client = new AmazonS3Client(new AWSCredentials()
{
@Override
public String getAWSAccessKeyId()
{
return System.getenv("AWS_ACCESS_KEY_ID");
}
@Override
public String getAWSSecretKey()
{
return System.getenv("AWS_SECRET_ACCESS_KEY");
}
});
try
{
String userName = System.getProperty("user.name");
String objKey = userName + "/hello";
s3Client.putObject("sfc-dev1-regression", objKey, new File("/tmp/hello"));
ObjectMetadata metadata = s3Client.getObjectMetadata("sfc-dev1-regression",
objKey);
if (metadata != null)
{
System.out.println("version id=" + metadata.getVersionId());
}
String lastVersion = metadata.getVersionId();
/*
s3Client.deleteVersion("sfc-dev1-regression",
"jhuang/hello", lastVersion);
*/
s3Client.deleteObject("sfc-dev1-regression", objKey);
// now restore the version
/*
s3Client.copyObject(new CopyObjectRequest(
"sfc-dev1-regression", "jhuang/hello", lastVersion,
"sfc-dev1-regression", "jhuang/hello"));
*/
metadata = s3Client.getObjectMetadata(
new GetObjectMetadataRequest("sfc-dev1-regression", objKey));
if (metadata != null)
{
System.out.println("version id=" + metadata.getVersionId());
}
/*
metadata = s3Client.getObjectMetadata("sfc-dev1-regression",
"jhuang/hello");
if (metadata != null)
{
System.out.println("version id=" + metadata.getVersionId());
}
*/
}
catch(AmazonServiceException ex)
{
System.out.println("error code=" + ex.getErrorCode() + ", " +
ex.getErrorType().name() + ", " + ex.getMessage());
}
}
//@Test
public void testRegionDetection()
{
AmazonS3Client s3Client = new AmazonS3Client(new AWSCredentials()
{
@Override
public String getAWSAccessKeyId()
{
return System.getenv("AWS_ACCESS_KEY_ID");
}
@Override
public String getAWSSecretKey()
{
return System.getenv("AWS_SECRET_ACCESS_KEY");
}
});
try
{
String loc = s3Client.getBucketLocation("sfc-dev1-regression");
System.out.println("bucket location=" + loc);
// default to "" for standard region
String detectedRegion = "";
for (Regions regionEnum : Regions.values())
{
// skip standard region
if (regionEnum == Regions.US_EAST_1)
continue;
s3Client.setRegion(Region.getRegion(regionEnum));
try
{
s3Client.getObjectMetadata("sfc-dev1-regression", "path/" +
String.valueOf(System.currentTimeMillis()));
}
catch (Exception ex)
{
System.out.println("Exception (type="+ex.getClass().getName() +
") for region: " + regionEnum.name() + ": " + ex.getMessage());
if (ex instanceof AmazonServiceException)
{
System.out.println("exception for region: " + regionEnum.name() +
": " + ex.getMessage());
AmazonServiceException ase = (AmazonServiceException)ex;
// if we get 404, it means we can access the bucket
if (ase.getStatusCode() == 404)
{
// replace _ with -
detectedRegion =
regionEnum.getName().replace('_', '-').toLowerCase();
}
}
}
}
System.out.println("region detected=" + detectedRegion);
}
catch(AmazonServiceException ex)
{
System.out.println("error code=" + ex.getErrorCode() + ", " +
ex.getErrorType().name() + ", " + ex.getMessage());
}
}
@Test
public void testAcceptUrls()
{
SnowflakeDriver snowflakeDriver = SnowflakeDriver.INSTANCE;
try {
// positive tests
assertTrue(snowflakeDriver.acceptsURL("jdbc:snowflake://"));
assertTrue(snowflakeDriver.acceptsURL("jdbc:snowflake://localhost"));
assertTrue(snowflakeDriver.acceptsURL("jdbc:snowflake://localhost:8081"));
assertTrue(snowflakeDriver.acceptsURL("jdbc:snowflake://localhost:8081?a=b"));
assertTrue(snowflakeDriver.acceptsURL("jdbc:snowflake://localhost:8081/?a=b"));
assertTrue(snowflakeDriver.acceptsURL("jdbc:snowflake://localhost:8081?a=b&c=d"));
assertTrue(snowflakeDriver.acceptsURL("jdbc:snowflake://localhost:8081/?a=b&c=d"));
// negative tests
assertTrue(!snowflakeDriver.acceptsURL("jdbc:snowflake://:"));
assertTrue(!snowflakeDriver.acceptsURL("jdbc:snowflake://localhost:"));
assertTrue(!snowflakeDriver.acceptsURL("jdbc:snowflake://:8080"));
assertTrue(!snowflakeDriver.acceptsURL("jdbc:snowflake://localhost:xyz"));
assertTrue(!snowflakeDriver.acceptsURL("jdbc:snowflak://localhost:8080"));
} catch (SQLException ex) {
Logger.getLogger(SnowflakeDriverTest.class.getName()).
log(Level.SEVERE, null, ex);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy