diff --git a/apidAnalytics_suite_test.go b/apidAnalytics_suite_test.go
index 983a987..669b18c 100644
--- a/apidAnalytics_suite_test.go
+++ b/apidAnalytics_suite_test.go
@@ -119,7 +119,10 @@
 }
 
 func createTables(db apid.DB) {
-	_, err := db.Exec(`
+	tx, err := db.Begin()
+	Expect(err).Should(Succeed())
+	defer tx.Rollback()
+	_, err = tx.Exec(`
 		CREATE TABLE IF NOT EXISTS kms_api_product (
 		    id text,
 		    tenant_id text,
@@ -186,13 +189,16 @@
 		    PRIMARY KEY (appcred_id, app_id, apiprdt_id,tenant_id)
 		);
 	`)
-	if err != nil {
-		panic("Unable to initialize DB " + err.Error())
-	}
+	Expect(err).Should(Succeed())
+	err = tx.Commit()
+	Expect(err).Should(Succeed())
 }
 
 func createApidClusterTables(db apid.DB) {
-	_, err := db.Exec(`
+	txn, err := db.Begin()
+	Expect(err).Should(Succeed())
+	defer txn.Rollback()
+	_, err = txn.Exec(`
 		CREATE TABLE edgex_apid_cluster (
 		    id text,
 		    instance_id text,
@@ -222,16 +228,17 @@
 		    PRIMARY KEY (id)
 		);
 	`)
-	if err != nil {
-		panic("Unable to initialize DB " + err.Error())
-	}
+	Expect(err).Should(Succeed())
+	err = txn.Commit()
+	Expect(err).Should(Succeed())
 }
 
 func insertTestData(db apid.DB) {
 
 	txn, err := db.Begin()
-	Expect(err).ShouldNot(HaveOccurred())
-	txn.Exec("INSERT INTO kms_app_credential_apiproduct_mapper (tenant_id,"+
+	Expect(err).Should(Succeed())
+	defer txn.Rollback()
+	_, err = txn.Exec("INSERT INTO kms_app_credential_apiproduct_mapper (tenant_id,"+
 		" appcred_id, app_id, apiprdt_id, status, _change_selector) "+
 		"VALUES"+
 		"($1,$2,$3,$4,$5,$6)",
@@ -242,8 +249,8 @@
 		"APPROVED",
 		"12345",
 	)
-
-	txn.Exec("INSERT INTO kms_app (id, tenant_id, name, developer_id) "+
+	Expect(err).Should(Succeed())
+	_, err = txn.Exec("INSERT INTO kms_app (id, tenant_id, name, developer_id) "+
 		"VALUES"+
 		"($1,$2,$3,$4)",
 		"testappid",
@@ -251,16 +258,16 @@
 		"testapp",
 		"testdeveloperid",
 	)
-
-	txn.Exec("INSERT INTO kms_api_product (id, tenant_id, name) "+
+	Expect(err).Should(Succeed())
+	_, err = txn.Exec("INSERT INTO kms_api_product (id, tenant_id, name) "+
 		"VALUES"+
 		"($1,$2,$3)",
 		"testproductid",
 		"tenantid",
 		"testproduct",
 	)
-
-	txn.Exec("INSERT INTO kms_developer (id, tenant_id, username, email) "+
+	Expect(err).Should(Succeed())
+	_, err = txn.Exec("INSERT INTO kms_developer (id, tenant_id, username, email) "+
 		"VALUES"+
 		"($1,$2,$3,$4)",
 		"testdeveloperid",
@@ -268,8 +275,8 @@
 		"testdeveloper",
 		"testdeveloper@test.com",
 	)
-
-	txn.Exec("INSERT INTO edgex_data_scope (id, _change_selector, "+
+	Expect(err).Should(Succeed())
+	_, err = txn.Exec("INSERT INTO edgex_data_scope (id, _change_selector, "+
 		"apid_cluster_id, scope, org, env) "+
 		"VALUES"+
 		"($1,$2,$3,$4,$5,$6)",
@@ -280,7 +287,9 @@
 		"testorg",
 		"testenv",
 	)
-	txn.Commit()
+	Expect(err).Should(Succeed())
+	err = txn.Commit()
+	Expect(err).Should(Succeed())
 }
 
 var _ = AfterSuite(func() {
diff --git a/common_helper.go b/common_helper.go
index 05805bf..262546a 100644
--- a/common_helper.go
+++ b/common_helper.go
@@ -186,7 +186,7 @@
 	db := getDB()
 	rows, err := db.Query("SELECT 1 FROM edgex_data_scope"+
 		" where org = ? and env = ?", tenant.Org, tenant.Env)
-
+	defer rows.Close()
 	if !rows.Next() {
 		if err == nil {
 			reason := "No tenant found for this org: " + tenant.Org + " and env:" + tenant.Env
diff --git a/uploader.go b/uploader.go
index d645a95..c37a257 100644
--- a/uploader.go
+++ b/uploader.go
@@ -165,7 +165,7 @@
 func getDateFromDirTimestamp(timestamp string) string {
 	dateTime, _ := time.Parse(timestampLayout, timestamp)
 	date := dateTime.Format("2006-01-02") // same as YYYY-MM-dd
-	time := dateTime.Format("15-04")      // same as HH-mm
+	time := dateTime.Format("15-04-05")   // same as HH-mm-ss
 	dateHourTS := "date=" + date + "/time=" + time
 	return dateHourTS
 }
diff --git a/uploader_test.go b/uploader_test.go
index 03f1ce2..72d87ea 100644
--- a/uploader_test.go
+++ b/uploader_test.go
@@ -30,7 +30,7 @@
 
 		By("valid tenant")
 		tenant := "testorg~testenv"
-		relativeFilePath := "/date=2006-01-02/time=15-04/fakefile.txt.gz"
+		relativeFilePath := "/date=2006-01-02/time=15-04-05/fakefile.txt.gz"
 
 		status, err := uploadFile(tenant, relativeFilePath, fp)
 		Expect(err).ShouldNot(HaveOccurred())
@@ -38,7 +38,7 @@
 
 		By("invalid tenant")
 		tenant = "o~e"
-		relativeFilePath = "/date=2006-01-02/time=15-04/fakefile.txt.gz"
+		relativeFilePath = "/date=2006-01-02/time=15-04-05/fakefile.txt.gz"
 
 		status, err = uploadFile(tenant, relativeFilePath, fp)
 		Expect(err).Should(HaveOccurred())
@@ -81,7 +81,7 @@
 	Context("invalid tenant", func() {
 		It("should return error", func() {
 			tenant := "org~env"
-			relativeFilePath := "/date=2016-01-01/time=22-45/a.txt.gz"
+			relativeFilePath := "/date=2016-01-01/time=22-45-05/a.txt.gz"
 
 			_, err := getSignedUrl(tenant, relativeFilePath)
 			Expect(err).Should(HaveOccurred())
@@ -91,7 +91,7 @@
 	Context("valid tenant", func() {
 		It("should return signed url", func() {
 			tenant := "testorg~testenv"
-			relativeFilePath := "/date=2016-01-01/time=22-45/a.txt.gz"
+			relativeFilePath := "/date=2016-01-01/time=22-45-05/a.txt.gz"
 
 			url, err := getSignedUrl(tenant, relativeFilePath)
 			Expect(err).ShouldNot(HaveOccurred())
@@ -150,6 +150,6 @@
 	It("should return date/time formatted timestamp", func() {
 		timestamp := "20060102150405"
 		dateHourTS := getDateFromDirTimestamp(timestamp)
-		Expect(dateHourTS).To(Equal("date=2006-01-02/time=15-04"))
+		Expect(dateHourTS).To(Equal("date=2006-01-02/time=15-04-05"))
 	})
 })
