1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
// Copyright 2020 New Relic Corporation. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
package nrsnowflake
import (
"testing"
"github.com/newrelic/go-agent/v3/newrelic"
"github.com/snowflakedb/gosnowflake"
)
func TestParseDSN(t *testing.T) {
testcases := []struct {
dsn string
expHost string
expPortPathOrID string
expDatabaseName string
}{
{
dsn: "user:password@account/database/schema",
expHost: "account.snowflakecomputing.com",
expPortPathOrID: "443",
expDatabaseName: "database",
},
{
dsn: "user:password@host:123/database/schema?account=user_account",
expHost: "host",
expPortPathOrID: "123",
expDatabaseName: "database",
},
}
for _, test := range testcases {
s := &newrelic.DatastoreSegment{}
parseDSN(s, test.dsn)
if test.expHost != s.Host {
t.Errorf(`incorrect host, expected="%s", actual="%s"`, test.expHost, s.Host)
}
if test.expPortPathOrID != s.PortPathOrID {
t.Errorf(`incorrect port path or id, expected="%s", actual="%s"`, test.expPortPathOrID, s.PortPathOrID)
}
if test.expDatabaseName != s.DatabaseName {
t.Errorf(`incorrect database name, expected="%s", actual="%s"`, test.expDatabaseName, s.DatabaseName)
}
}
}
func TestParseConfig(t *testing.T) {
testcases := []struct {
cfgHost string
cfgPort int
cfgDBName string
expHost string
expPortPathOrID string
expDatabaseName string
}{
{
cfgDBName: "mydb",
expDatabaseName: "mydb",
expPortPathOrID: "",
},
{
cfgHost: "unixgram",
cfgPort: 123,
expHost: "unixgram",
expPortPathOrID: "123",
},
}
for _, test := range testcases {
s := &newrelic.DatastoreSegment{}
cfg := &gosnowflake.Config{
Host: test.cfgHost,
Port: test.cfgPort,
Database: test.cfgDBName,
}
parseConfig(s, cfg)
if test.expHost != s.Host {
t.Errorf(`incorrect host, expected="%s", actual="%s"`, test.expHost, s.Host)
}
if test.expPortPathOrID != s.PortPathOrID {
t.Errorf(`incorrect port path or id, expected="%s", actual="%s"`, test.expPortPathOrID, s.PortPathOrID)
}
if test.expDatabaseName != s.DatabaseName {
t.Errorf(`incorrect database name, expected="%s", actual="%s"`, test.expDatabaseName, s.DatabaseName)
}
}
}
|