@@ -2162,6 +2162,23 @@ func TestPrometheusK8sAdditionalAlertManagerConfigsSecret(t *testing.T) {
21622162` ,
21632163 mountedSecrets : []string {"alertmanager-bearer-token" , "alertmanager-ca-tls" , "alertmanager-cert-tls" , "alertmanager-key-tls" },
21642164 },
2165+ {
2166+ name : "proxy from environment" ,
2167+ config : `prometheusK8s:
2168+ additionalAlertmanagerConfigs:
2169+ - staticConfigs:
2170+ - alertmanager1-remote.com
2171+ - alertmanager1-remotex.com
2172+ proxyFromEnvironment: true
2173+ ` ,
2174+ expected : `- static_configs:
2175+ - targets:
2176+ - alertmanager1-remote.com
2177+ - alertmanager1-remotex.com
2178+ proxy_from_environment: true
2179+ ` ,
2180+ mountedSecrets : []string {},
2181+ },
21652182 }
21662183
21672184 for _ , tt := range testCases {
@@ -4919,6 +4936,144 @@ func TestAlertmanagerProxy(t *testing.T) {
49194936 }
49204937}
49214938
4939+ func TestPrometheusProxy (t * testing.T ) {
4940+ for _ , tc := range []struct {
4941+ proxyReader ProxyReader
4942+ assertFn func (* testing.T , * v1.Container )
4943+ }{
4944+ {
4945+ proxyReader : & fakeProxyReader {},
4946+ assertFn : func (t * testing.T , c * v1.Container ) {
4947+ t .Helper ()
4948+
4949+ require .Len (t , c .Env , 3 )
4950+ require .Equal (t , c .Env [0 ].Value , "" )
4951+ require .Equal (t , c .Env [1 ].Value , "" )
4952+ require .Equal (t , c .Env [2 ].Value , "" )
4953+ },
4954+ },
4955+ {
4956+ proxyReader : & fakeProxyReader {
4957+ httpProxy : "http://example.com:8080/" ,
4958+ httpsProxy : "https://example.com:8080/" ,
4959+ noProxy : "local.example.com" ,
4960+ },
4961+ assertFn : func (t * testing.T , c * v1.Container ) {
4962+ t .Helper ()
4963+
4964+ require .Len (t , c .Env , 3 )
4965+ require .Equal (t , c .Env [0 ].Name , "HTTP_PROXY" )
4966+ require .Equal (t , c .Env [0 ].Value , "http://example.com:8080/" )
4967+ require .Equal (t , c .Env [1 ].Name , "HTTPS_PROXY" )
4968+ require .Equal (t , c .Env [1 ].Value , "https://example.com:8080/" )
4969+ require .Equal (t , c .Env [2 ].Name , "NO_PROXY" )
4970+ require .Equal (t , c .Env [2 ].Value , "local.example.com" )
4971+ },
4972+ },
4973+ } {
4974+ t .Run ("" , func (t * testing.T ) {
4975+ findContainer := func (am * monv1.Prometheus ) * v1.Container {
4976+ for _ , c := range am .Spec .Containers {
4977+ if c .Name == "prometheus" {
4978+ return & c
4979+ }
4980+ }
4981+
4982+ return nil
4983+ }
4984+
4985+ f := NewFactory ("openshift-monitoring" , "openshift-user-workload-monitoring" , NewDefaultConfig (), defaultInfrastructureReader (), tc .proxyReader , NewAssets (assetsPath ), & APIServerConfig {}, & configv1.Console {})
4986+
4987+ t .Run ("main" , func (t * testing.T ) {
4988+ p , err := f .PrometheusK8s (
4989+ & v1.Secret {ObjectMeta : metav1.ObjectMeta {Name : "foo" }},
4990+ nil ,
4991+ )
4992+ require .NoError (t , err )
4993+
4994+ amc := findContainer (p )
4995+ require .NotNil (t , amc )
4996+ tc .assertFn (t , amc )
4997+ })
4998+
4999+ t .Run ("user" , func (t * testing.T ) {
5000+ p , err := f .PrometheusUserWorkload (
5001+ & v1.Secret {ObjectMeta : metav1.ObjectMeta {Name : "foo" }},
5002+ )
5003+ require .NoError (t , err )
5004+
5005+ pc := findContainer (p )
5006+ require .NotNil (t , pc )
5007+ tc .assertFn (t , pc )
5008+ })
5009+ })
5010+ }
5011+ }
5012+
5013+ func TestThanosRulerProxy (t * testing.T ) {
5014+ for _ , tc := range []struct {
5015+ proxyReader ProxyReader
5016+ assertFn func (* testing.T , * v1.Container )
5017+ }{
5018+ {
5019+ proxyReader : & fakeProxyReader {},
5020+ assertFn : func (t * testing.T , c * v1.Container ) {
5021+ t .Helper ()
5022+
5023+ require .Len (t , c .Env , 3 )
5024+ require .Equal (t , c .Env [0 ].Value , "" )
5025+ require .Equal (t , c .Env [1 ].Value , "" )
5026+ require .Equal (t , c .Env [2 ].Value , "" )
5027+ },
5028+ },
5029+ {
5030+ proxyReader : & fakeProxyReader {
5031+ httpProxy : "http://example.com:8080/" ,
5032+ httpsProxy : "https://example.com:8080/" ,
5033+ noProxy : "local.example.com" ,
5034+ },
5035+ assertFn : func (t * testing.T , c * v1.Container ) {
5036+ t .Helper ()
5037+
5038+ require .Len (t , c .Env , 3 )
5039+ require .Equal (t , c .Env [0 ].Name , "HTTP_PROXY" )
5040+ require .Equal (t , c .Env [0 ].Value , "http://example.com:8080/" )
5041+ require .Equal (t , c .Env [1 ].Name , "HTTPS_PROXY" )
5042+ require .Equal (t , c .Env [1 ].Value , "https://example.com:8080/" )
5043+ require .Equal (t , c .Env [2 ].Name , "NO_PROXY" )
5044+ require .Equal (t , c .Env [2 ].Value , "local.example.com" )
5045+ },
5046+ },
5047+ } {
5048+ t .Run ("" , func (t * testing.T ) {
5049+ findContainer := func (am * monv1.ThanosRuler ) * v1.Container {
5050+ for _ , c := range am .Spec .Containers {
5051+ if c .Name == "thanos-ruler" {
5052+ return & c
5053+ }
5054+ }
5055+
5056+ return nil
5057+ }
5058+
5059+ f := NewFactory ("openshift-monitoring" , "openshift-user-workload-monitoring" , NewDefaultConfig (), defaultInfrastructureReader (), tc .proxyReader , NewAssets (assetsPath ), & APIServerConfig {}, & configv1.Console {})
5060+
5061+ t .Run ("main" , func (t * testing.T ) {
5062+ tr , err := f .ThanosRulerCustomResource (
5063+ & v1.Secret {ObjectMeta : metav1.ObjectMeta {Name : "foo" }},
5064+ nil ,
5065+ )
5066+ require .NoError (t , err )
5067+
5068+ trc := findContainer (tr )
5069+ require .NotNil (t , trc )
5070+ tc .assertFn (t , trc )
5071+ })
5072+
5073+ })
5074+ }
5075+ }
5076+
49225077func TestDescriptionWithoutPlaceholder (t * testing.T ) {
49235078 tests := []struct {
49245079 name string
0 commit comments