annotate config/config.go @ 196:b67208d82543

Make test output more comprehensive Running all tests in one transaction ensures the final output tells about any failing test, not just in the last transaction (i.e. test script). The price is that no traces of the tests are left in the database because we have to rollback in order to have no left-over test roles in the cluster.
author Tom Gottfried <tom@intevation.de>
date Fri, 20 Jul 2018 18:31:45 +0200
parents 3457a60fb12d
children 11d1a488b08f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package config
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
125
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
3 import (
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
4 "log"
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
5 "os"
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
6 "strconv"
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
7 )
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
8
28
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 var Config = NewConfiguration()
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 type Configuration struct {
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 DBHost string
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 DBPort uint
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 DBName string
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 DBSSLMode string
119
29e56c342c9f Added first middleware for JWT token extraction. TODO: Add second one to check against logged in users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 28
diff changeset
16
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 147
diff changeset
17 SessionStore string
28
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 }
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 func NewConfiguration() *Configuration {
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 // TODO: Load from file.
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 return &Configuration{
190
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 147
diff changeset
23 DBHost: envString("GEMMA_DB_HOST", "localhost"),
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 147
diff changeset
24 DBPort: envUint("GEMMA_DB_PORT", 5432),
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 147
diff changeset
25 DBName: envString("GEMMA_DB_NAME", "gemma"),
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 147
diff changeset
26 DBSSLMode: envString("GEMMA_DB_SSL_MODE", "require"),
3457a60fb12d Added stub for a persistent session store.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 147
diff changeset
27 SessionStore: envString("GEMMA_SESSION_STORE", ""),
28
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 }
714787accd26 Fetch database connection string parts from configuration.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 }
125
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
30
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
31 func envString(key, def string) string {
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
32 if v, ok := os.LookupEnv(key); ok {
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
33 return v
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
34 }
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
35 return def
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
36 }
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
37
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
38 func envUint(key string, def uint) uint {
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
39 if v, ok := os.LookupEnv(key); ok {
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
40 x, err := strconv.ParseUint(v, 10, 64)
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
41 if err != nil {
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
42 log.Printf("warn: invalid uint env %s: %v\n", key, err)
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
43 return def
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
44 }
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
45 return uint(x)
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
46 }
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
47 return def
a98a282f00e1 Wired token generator and connection pool to token server.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 119
diff changeset
48 }