diff --git a/exporter.go b/exporter.go index fa4011e..3533152 100644 --- a/exporter.go +++ b/exporter.go @@ -20,6 +20,7 @@ const ( endpointScrapeDuration contextValues = "endpointScrapeDuration" endpointUpMetric contextValues = "endpointUpMetric" nodeName contextValues = "node" + clusterName contextValues = "cluster" ) //RegisterExporter makes an exporter available by the provided name. @@ -94,6 +95,7 @@ func (e *exporter) Collect(ch chan<- prometheus.Metric) { } ctx = context.WithValue(ctx, nodeName, e.overviewExporter.NodeInfo().Node) + ctx = context.WithValue(ctx, clusterName, e.overviewExporter.NodeInfo().ClusterName) for name, ex := range e.exporter { diff --git a/exporter_queue.go b/exporter_queue.go index ae907f7..1080743 100644 --- a/exporter_queue.go +++ b/exporter_queue.go @@ -13,7 +13,7 @@ func init() { } var ( - queueLabels = []string{"vhost", "queue", "durable", "policy", "self"} + queueLabels = []string{"cluster", "vhost", "queue", "durable", "policy", "self"} queueLabelKeys = []string{"vhost", "name", "durable", "policy", "state", "node"} queueGaugeVec = map[string]*prometheus.GaugeVec{ @@ -113,6 +113,10 @@ func (e exporterQueue) Collect(ctx context.Context, ch chan<- prometheus.Metric) if n, ok := ctx.Value(nodeName).(string); ok { selfNode = n } + cluster := "" + if n, ok := ctx.Value(clusterName).(string); ok { + cluster = n + } rabbitMqQueueData, err := getStatsInfo(config, "queues", queueLabelKeys) @@ -136,7 +140,7 @@ func (e exporterQueue) Collect(ctx context.Context, ch chan<- prometheus.Metric) self = "1" } // log.WithFields(log.Fields{"vhost": queue.labels["vhost"], "queue": queue.labels["name"], "key": key, "value": value}).Info("Set queue metric for key") - gaugevec.WithLabelValues(queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self).Set(value) + gaugevec.WithLabelValues(cluster, queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self).Set(value) } } } @@ -158,7 +162,7 @@ func (e exporterQueue) Collect(ctx context.Context, ch chan<- prometheus.Metric) if queue.labels["node"] == selfNode { self = "1" } - e.stateMetric.WithLabelValues(queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self, queue.labels["state"]).Set(1) + e.stateMetric.WithLabelValues(cluster, queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self, queue.labels["state"]).Set(1) } } } @@ -180,9 +184,9 @@ func (e exporterQueue) Collect(ctx context.Context, ch chan<- prometheus.Metric) self = "1" } if value, ok := queue.metrics[key]; ok { - ch <- prometheus.MustNewConstMetric(countvec, prometheus.CounterValue, value, queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self) + ch <- prometheus.MustNewConstMetric(countvec, prometheus.CounterValue, value, cluster, queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self) } else { - ch <- prometheus.MustNewConstMetric(countvec, prometheus.CounterValue, 0, queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self) + ch <- prometheus.MustNewConstMetric(countvec, prometheus.CounterValue, 0, cluster, queue.labels["vhost"], queue.labels["name"], queue.labels["durable"], queue.labels["policy"], self) } } } diff --git a/exporter_test.go b/exporter_test.go index c5276c6..6ec1748 100644 --- a/exporter_test.go +++ b/exporter_test.go @@ -99,11 +99,11 @@ func TestWholeApp(t *testing.T) { expectSubstring(t, body, `rabbitmq_partitions{node="my-rabbit@5a00cd8fe2f4",self="0"} 4`) // queue - expectSubstring(t, body, `rabbitmq_queue_messages_ready{durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) - expectSubstring(t, body, `rabbitmq_queue_memory{durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) - expectSubstring(t, body, `rabbitmq_queue_messages_published_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - expectSubstring(t, body, `rabbitmq_queue_disk_writes_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - expectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) + expectSubstring(t, body, `rabbitmq_queue_messages_ready{cluster="my-rabbit@ae74c041248b",durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) + expectSubstring(t, body, `rabbitmq_queue_memory{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) + expectSubstring(t, body, `rabbitmq_queue_messages_published_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + expectSubstring(t, body, `rabbitmq_queue_disk_writes_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + expectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) // exchange expectSubstring(t, body, `rabbitmq_exchange_messages_published_in_total{exchange="myExchange",vhost="/"} 5`) // connection @@ -149,11 +149,11 @@ func TestWholeAppInverted(t *testing.T) { dontExpectSubstring(t, body, `rabbitmq_partitions{node="my-rabbit@5a00cd8fe2f4"} 4`) // queue - dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) - dontExpectSubstring(t, body, `rabbitmq_queue_memory{durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{cluster="my-rabbit@ae74c041248b",durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) + dontExpectSubstring(t, body, `rabbitmq_queue_memory{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) // exchange dontExpectSubstring(t, body, `rabbitmq_exchange_messages_published_in_total{exchange="myExchange",vhost="/"} 5`) // connection @@ -200,11 +200,11 @@ func TestAppMaxQueues(t *testing.T) { expectSubstring(t, body, `rabbitmq_partitions{node="my-rabbit@5a00cd8fe2f4",self="0"} 4`) // queue - dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) - dontExpectSubstring(t, body, `rabbitmq_queue_memory{durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{cluster="my-rabbit@ae74c041248b",durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) + dontExpectSubstring(t, body, `rabbitmq_queue_memory{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) // exchange expectSubstring(t, body, `rabbitmq_exchange_messages_published_in_total{exchange="myExchange",vhost="/"} 5`) @@ -315,11 +315,11 @@ func TestResetMetricsOnRabbitFailure(t *testing.T) { expectSubstring(t, body, `rabbitmq_partitions{node="my-rabbit@5a00cd8fe2f4",self="0"} 4`) // queue - expectSubstring(t, body, `rabbitmq_queue_messages_ready{durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) - expectSubstring(t, body, `rabbitmq_queue_memory{durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) - expectSubstring(t, body, `rabbitmq_queue_messages_published_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - expectSubstring(t, body, `rabbitmq_queue_disk_writes_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) - expectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) + expectSubstring(t, body, `rabbitmq_queue_messages_ready{cluster="my-rabbit@ae74c041248b",durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"} 25`) + expectSubstring(t, body, `rabbitmq_queue_memory{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"} 13912`) + expectSubstring(t, body, `rabbitmq_queue_messages_published_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + expectSubstring(t, body, `rabbitmq_queue_disk_writes_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 6`) + expectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"} 0`) // exchange expectSubstring(t, body, `rabbitmq_exchange_messages_published_in_total{exchange="myExchange",vhost="/"} 5`) @@ -358,11 +358,11 @@ func TestResetMetricsOnRabbitFailure(t *testing.T) { expectSubstring(t, body, `rabbitmq_partitions{node="my-rabbit@5a00cd8fe2f4",self="0"} 4`) // queue - dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_memory{durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{cluster="my-rabbit@ae74c041248b",durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_memory{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) // exchange expectSubstring(t, body, `rabbitmq_exchange_messages_published_in_total{exchange="myExchange",vhost="/"} 5`) @@ -401,11 +401,11 @@ func TestResetMetricsOnRabbitFailure(t *testing.T) { dontExpectSubstring(t, body, `rabbitmq_partitions{node="my-rabbit@5a00cd8fe2f4",self="0"} 4`) // queue - dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_memory{durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) - dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_ready{cluster="my-rabbit@ae74c041248b",durable="true",policy="ha-2",queue="myQueue2",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_memory{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue4",self="1",vhost="vhost4"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_published_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_disk_writes_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) + dontExpectSubstring(t, body, `rabbitmq_queue_messages_delivered_total{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",vhost="/"}`) // exchange dontExpectSubstring(t, body, `rabbitmq_exchange_messages_published_in_total{exchange="myExchange",vhost="/"}`) @@ -444,9 +444,9 @@ func TestQueueState(t *testing.T) { expectSubstring(t, body, `rabbitmq_up 1`) // queue - expectSubstring(t, body, `rabbitmq_queue_state{durable="true",policy="",queue="myQueue1",self="1",state="flow",vhost="/"} 1`) - expectSubstring(t, body, `rabbitmq_queue_state{durable="true",policy="",queue="myQueue3",self="1",state="running",vhost="/"} 1`) - expectSubstring(t, body, `rabbitmq_queue_state{durable="true",policy="ha-2",queue="myQueue2",self="1",state="running",vhost="/"} 1`) + expectSubstring(t, body, `rabbitmq_queue_state{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue1",self="1",state="flow",vhost="/"} 1`) + expectSubstring(t, body, `rabbitmq_queue_state{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="myQueue3",self="1",state="running",vhost="/"} 1`) + expectSubstring(t, body, `rabbitmq_queue_state{cluster="my-rabbit@ae74c041248b",durable="true",policy="ha-2",queue="myQueue2",self="1",state="running",vhost="/"} 1`) // connections expectSubstring(t, body, `rabbitmq_connection_status{node="rabbit@rmq-cluster-node-04",peer_host="172.31.0.130",self="0",state="running",user="rmq_oms",vhost="/"} 1`) @@ -460,7 +460,7 @@ func TestQueueLength(t *testing.T) { if err != nil { t.Fatalf("Error reading %s", testdataFile) } - server := setupServer(t, "", string(queuedata), "", "", "") + server := setupServer(t, `{"node": "rabbit@rabbitmq1","cluster_name": "my-rabbit@ae74c041248b"}`, string(queuedata), "", "", "") defer server.Close() os.Setenv("RABBIT_URL", server.URL) @@ -484,7 +484,7 @@ func TestQueueLength(t *testing.T) { t.Log(body) // queue - expectSubstring(t, body, `rabbitmq_queue_max_length{durable="true",policy="",queue="QueueWithMaxLength55",self="0",vhost="/"} 55`) - expectSubstring(t, body, `rabbitmq_queue_max_length_bytes{durable="true",policy="",queue="QueueWithMaxBytes99",self="0",vhost="/"} 99`) + expectSubstring(t, body, `rabbitmq_queue_max_length{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="QueueWithMaxLength55",self="1",vhost="/"} 55`) + expectSubstring(t, body, `rabbitmq_queue_max_length_bytes{cluster="my-rabbit@ae74c041248b",durable="true",policy="",queue="QueueWithMaxBytes99",self="1",vhost="/"} 99`) } diff --git a/integration_test.go b/integration_test.go index 8465d65..483c641 100644 --- a/integration_test.go +++ b/integration_test.go @@ -41,7 +41,7 @@ func TestQueueCount(t *testing.T) { t.Run("Ensure there are no queues", func(t *testing.T) { body := testenv.GetOrDie(exporterURL, 5*time.Second) - r := regexp.MustCompile("rabbitmq_queues.* 0") + r := regexp.MustCompile(`rabbitmq_queues{cluster="rabbit@localtest"} 0`) if s := r.FindString(body); s == "" { t.Fatalf("QueueCount 0 not found in body: %v", body) } @@ -52,7 +52,7 @@ func TestQueueCount(t *testing.T) { body := testenv.GetOrDie(exporterURL, 5*time.Second) - r := regexp.MustCompile("rabbitmq_queues.* 1") + r := regexp.MustCompile(`rabbitmq_queues{cluster="rabbit@localtest"} 1`) if s := r.FindString(body); s == "" { // t.Logf("body: %s", body) t.Fatalf("QueueCount 1 not found ") @@ -68,7 +68,7 @@ func TestQueueCount(t *testing.T) { // log.Println(testenv.GetOrDie(env.ManagementURL()+"/api/queues", 5*time.Second)) body := testenv.GetOrDie(exporterURL, 5*time.Second) - search := fmt.Sprintf(`rabbitmq_queue_head_message_timestamp{durable="true",policy="",queue="%s",self="1",vhost="/"} %1.9e`, queue, float64(timestamp.Unix())) + search := fmt.Sprintf(`rabbitmq_queue_head_message_timestamp{cluster="rabbit@localtest",durable="true",policy="",queue="%s",self="1",vhost="/"} %1.9e`, queue, float64(timestamp.Unix())) i := strings.Index(body, search) if i == -1 { @@ -84,7 +84,7 @@ func TestQueueCount(t *testing.T) { time.Sleep(5 * time.Second) // give rabbitmq management plugin a bit of time body := testenv.GetOrDie(exporterURL, 5*time.Second) - search := fmt.Sprintf(`rabbitmq_queue_messages{durable="true",policy="",queue="%s",self="1",vhost="/"} 0`, queue) + search := fmt.Sprintf(`rabbitmq_queue_messages{cluster="rabbit@localtest",durable="true",policy="",queue="%s",self="1",vhost="/"} 0`, queue) i := strings.Index(body, search) if i == -1 { @@ -101,7 +101,7 @@ func TestQueueCount(t *testing.T) { body := testenv.GetOrDie(exporterURL, 5*time.Second) - search := fmt.Sprintf(`rabbitmq_queue_messages{durable="false",policy="",queue="%s",self="1",vhost="/"} 0`, queue) + search := fmt.Sprintf(`rabbitmq_queue_messages{cluster="rabbit@localtest",durable="false",policy="",queue="%s",self="1",vhost="/"} 0`, queue) i := strings.Index(body, search) if i == -1 { @@ -120,7 +120,7 @@ func TestQueueCount(t *testing.T) { time.Sleep(10 * time.Second) // give rabbitmq management plugin a bit of time body := testenv.GetOrDie(exporterURL, 5*time.Second) - search := fmt.Sprintf(`rabbitmq_queue_messages{durable="false",policy="%s",queue="%s",self="1",vhost="/"} 0`, policy, queue) + search := fmt.Sprintf(`rabbitmq_queue_messages{cluster="rabbit@localtest",durable="false",policy="%s",queue="%s",self="1",vhost="/"} 0`, policy, queue) i := strings.Index(body, search) if i == -1 { // t.Log(env.ManagementURL()) diff --git a/testdata/overview-3.6.8.json b/testdata/overview-3.6.8.json index 4cb29b0..e064a5a 100644 --- a/testdata/overview-3.6.8.json +++ b/testdata/overview-3.6.8.json @@ -1 +1,116 @@ -{"management_version":"3.6.8+1.g1dcb221","rates_mode":"basic","exchange_types":[{"name":"topic","description":"AMQP topic exchange, as per the AMQP specification","enabled":true},{"name":"direct","description":"AMQP direct exchange, as per the AMQP specification","enabled":true},{"name":"headers","description":"AMQP headers exchange, as per the AMQP specification","enabled":true},{"name":"fanout","description":"AMQP fanout exchange, as per the AMQP specification","enabled":true}],"rabbitmq_version":"3.6.8+1.g1dcb221","cluster_name":"rabbit-dev@demandred","erlang_version":"18.3.4.4","erlang_full_version":"Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]","message_stats":{"publish":1,"publish_details":{"rate":0.0},"confirm":1,"confirm_details":{"rate":0.0},"return_unroutable":0,"return_unroutable_details":{"rate":0.0},"disk_reads":0,"disk_reads_details":{"rate":0.0},"disk_writes":0,"disk_writes_details":{"rate":0.0}},"queue_totals":{"messages_ready":1,"messages_ready_details":{"rate":0.0},"messages_unacknowledged":0,"messages_unacknowledged_details":{"rate":0.0},"messages":1,"messages_details":{"rate":0.0}},"object_totals":{"consumers":0,"queues":3,"exchanges":8,"connections":1,"channels":1},"statistics_db_event_queue":0,"node":"rabbit-dev@localhost","listeners":[{"node":"rabbit-dev@localhost","protocol":"amqp","ip_address":"::","port":5672,"socket_opts":{"backlog":128,"nodelay":true,"linger":[true,0],"exit_on_close":false}},{"node":"rabbit-dev@localhost","protocol":"clustering","ip_address":"::","port":42475,"socket_opts":[]},{"node":"rabbit-dev@localhost","protocol":"http","ip_address":"::","port":15672,"socket_opts":{"port":15672}}],"contexts":[{"node":"rabbit-dev@localhost","description":"RabbitMQ Management","path":"/","port":"15672"}]} \ No newline at end of file +{ + "management_version": "3.6.8+1.g1dcb221", + "rates_mode": "basic", + "exchange_types": [ + { + "name": "topic", + "description": "AMQP topic exchange, as per the AMQP specification", + "enabled": true + }, + { + "name": "direct", + "description": "AMQP direct exchange, as per the AMQP specification", + "enabled": true + }, + { + "name": "headers", + "description": "AMQP headers exchange, as per the AMQP specification", + "enabled": true + }, + { + "name": "fanout", + "description": "AMQP fanout exchange, as per the AMQP specification", + "enabled": true + } + ], + "rabbitmq_version": "3.6.8+1.g1dcb221", + "cluster_name": "rabbit-dev@demandred", + "erlang_version": "18.3.4.4", + "erlang_full_version": "Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]", + "message_stats": { + "publish": 1, + "publish_details": { + "rate": 0 + }, + "confirm": 1, + "confirm_details": { + "rate": 0 + }, + "return_unroutable": 0, + "return_unroutable_details": { + "rate": 0 + }, + "disk_reads": 0, + "disk_reads_details": { + "rate": 0 + }, + "disk_writes": 0, + "disk_writes_details": { + "rate": 0 + } + }, + "queue_totals": { + "messages_ready": 1, + "messages_ready_details": { + "rate": 0 + }, + "messages_unacknowledged": 0, + "messages_unacknowledged_details": { + "rate": 0 + }, + "messages": 1, + "messages_details": { + "rate": 0 + } + }, + "object_totals": { + "consumers": 0, + "queues": 3, + "exchanges": 8, + "connections": 1, + "channels": 1 + }, + "statistics_db_event_queue": 0, + "node": "rabbit-dev@localhost", + "listeners": [ + { + "node": "rabbit-dev@localhost", + "protocol": "amqp", + "ip_address": "::", + "port": 5672, + "socket_opts": { + "backlog": 128, + "nodelay": true, + "linger": [ + true, + 0 + ], + "exit_on_close": false + } + }, + { + "node": "rabbit-dev@localhost", + "protocol": "clustering", + "ip_address": "::", + "port": 42475, + "socket_opts": [] + }, + { + "node": "rabbit-dev@localhost", + "protocol": "http", + "ip_address": "::", + "port": 15672, + "socket_opts": { + "port": 15672 + } + } + ], + "contexts": [ + { + "node": "rabbit-dev@localhost", + "description": "RabbitMQ Management", + "path": "/", + "port": "15672" + } + ] +} \ No newline at end of file diff --git a/testenv/testenv.go b/testenv/testenv.go index 12623c9..fccd024 100644 --- a/testenv/testenv.go +++ b/testenv/testenv.go @@ -48,7 +48,8 @@ func NewEnvironment(t *testing.T, dockerTag string) TestEnvironment { tenv.docker.MaxWait = MaxWait // pulls an image, creates a container based on it and runs it - resource, err := tenv.docker.Run("rabbitmq", dockerTag, []string{}) + resource, err := tenv.docker.RunWithOptions(&dockertest.RunOptions{Repository: "rabbitmq", Tag: dockerTag, Hostname: "localtest"}) + if err != nil { log.Fatalf("Could not start resource: %s", err) }