File: nrsnowflake_test.go

package info (click to toggle)
golang-github-newrelic-go-agent 3.15.2-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 8,356 kB
  • sloc: sh: 65; makefile: 6
file content (89 lines) | stat: -rw-r--r-- 2,355 bytes parent folder | download
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)
		}
	}
}