mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-02 20:06:03 +02:00
* metrics: support dynamic configuration settings * add test * trace: update configuration when settings change * config: allow logging options to be configured when settings change * envoy: allow changing log settings * fix unexpected doc change * fix tests * pick a port at random * update based on review
56 lines
997 B
Go
56 lines
997 B
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestMetricsManager(t *testing.T) {
|
|
li1, err := net.Listen("tcp", "127.0.0.1:0")
|
|
if !assert.NoError(t, err) {
|
|
return
|
|
}
|
|
addr1 := li1.Addr().String()
|
|
|
|
li2, err := net.Listen("tcp", "127.0.0.1:0")
|
|
if !assert.NoError(t, err) {
|
|
return
|
|
}
|
|
addr2 := li2.Addr().String()
|
|
|
|
li1.Close()
|
|
li2.Close()
|
|
|
|
src := NewStaticSource(&Config{
|
|
Options: &Options{
|
|
MetricsAddr: addr1,
|
|
},
|
|
})
|
|
mgr := NewMetricsManager(src)
|
|
defer mgr.Close()
|
|
|
|
getStatusCode := func(addr string) int {
|
|
res, err := http.Get(fmt.Sprintf("http://%s/metrics", addr))
|
|
if err != nil {
|
|
return 500
|
|
}
|
|
defer res.Body.Close()
|
|
return res.StatusCode
|
|
}
|
|
|
|
assert.Equal(t, 200, getStatusCode(addr1))
|
|
assert.Equal(t, 500, getStatusCode(addr2))
|
|
|
|
src.SetConfig(&Config{
|
|
Options: &Options{
|
|
MetricsAddr: addr2,
|
|
},
|
|
})
|
|
|
|
assert.Equal(t, 500, getStatusCode(addr1))
|
|
assert.Equal(t, 200, getStatusCode(addr2))
|
|
}
|