All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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