mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-21 03:38:43 +00:00
test: add e2e tests for rule/config reloading
This commit is contained in:
parent
3f42845b99
commit
cb2e7a7a27
2 changed files with 120 additions and 0 deletions
test/e2e
|
@ -147,6 +147,18 @@ func (f *Framework) setupPrometheusOperator(opImage string) error {
|
|||
|
||||
// Teardown tears down a previously initialized test environment.
|
||||
func (f *Framework) Teardown() error {
|
||||
if err := f.KubeClient.Core().Services(f.Namespace.Name).Delete("prometheus-operated", nil); err != nil && !k8sutil.IsResourceNotFoundError(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := f.KubeClient.Core().Services(f.Namespace.Name).Delete("alertmanager-operated", nil); err != nil && !k8sutil.IsResourceNotFoundError(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := f.KubeClient.Extensions().Deployments(f.Namespace.Name).Delete("prometheus-operator", nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := f.KubeClient.Core().Namespaces().Delete(f.Namespace.Name, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -220,3 +232,17 @@ func (f *Framework) createDeployment(deploy *v1beta1.Deployment) error {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *Framework) GetLogs(podName, containerName string) (string, error) {
|
||||
logs, err := f.KubeClient.Core().RESTClient().Get().
|
||||
Resource("pods").
|
||||
Namespace(f.Namespace.Name).
|
||||
Name(podName).SubResource("log").
|
||||
Param("container", containerName).
|
||||
Do().
|
||||
Raw()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(logs), err
|
||||
}
|
||||
|
|
|
@ -21,9 +21,11 @@ import (
|
|||
"net/http"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"k8s.io/client-go/pkg/api/v1"
|
||||
metav1 "k8s.io/client-go/pkg/apis/meta/v1"
|
||||
|
||||
"github.com/coreos/prometheus-operator/pkg/alertmanager"
|
||||
|
@ -91,6 +93,98 @@ func TestPrometheusVersionMigration(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestPrometheusReloadConfig(t *testing.T) {
|
||||
name := "test"
|
||||
|
||||
defer func() {
|
||||
if err := framework.DeletePrometheusAndWaitUntilGone(name); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
cfg := &v1.ConfigMap{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: fmt.Sprintf("prometheus-%s", name),
|
||||
},
|
||||
Data: map[string]string{
|
||||
"prometheus.yaml": "",
|
||||
},
|
||||
}
|
||||
|
||||
if _, err := framework.KubeClient.CoreV1().ConfigMaps(framework.Namespace.Name).Create(cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := framework.CreatePrometheusAndWaitUntilReady(framework.MakeBasicPrometheus(name, name, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cfg.Data["prometheus.yaml"] = "global:\n scrape_interval: 1m"
|
||||
if _, err := framework.KubeClient.CoreV1().ConfigMaps(framework.Namespace.Name).Update(cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// remounting a ConfigMap can take some time
|
||||
err := poll(time.Minute*5, time.Second*20, func() (bool, error) {
|
||||
logs, err := framework.GetLogs(fmt.Sprintf("prometheus-%s-0", name), "config-reloader")
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if strings.Contains(logs, "config map updated") && strings.Contains(logs, "successfully triggered reload") {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
return false, nil
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrometheusReloadRules(t *testing.T) {
|
||||
name := "test"
|
||||
|
||||
defer func() {
|
||||
if err := framework.DeletePrometheusAndWaitUntilGone(name); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
if err := framework.CreatePrometheusAndWaitUntilReady(framework.MakeBasicPrometheus(name, name, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
_, err := framework.KubeClient.CoreV1().ConfigMaps(framework.Namespace.Name).Update(&v1.ConfigMap{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: fmt.Sprintf("prometheus-%s-rules", name),
|
||||
},
|
||||
Data: map[string]string{
|
||||
"test.rules": "",
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// remounting a ConfigMap can take some time
|
||||
err = poll(time.Minute*5, time.Second*20, func() (bool, error) {
|
||||
logs, err := framework.GetLogs(fmt.Sprintf("prometheus-%s-0", name), "config-reloader")
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if strings.Contains(logs, "config map updated") && strings.Contains(logs, "successfully triggered reload") {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
return false, nil
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrometheusDiscovery(t *testing.T) {
|
||||
prometheusName := "test"
|
||||
group := "servicediscovery-test"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue