Skip to content

Commit ee201fe

Browse files
committed
PMM-10278 Add 'original' exporter binary to makefile
1 parent 2f83aab commit ee201fe

File tree

3 files changed

+101
-101
lines changed

3 files changed

+101
-101
lines changed

percona/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ test-performance:
33

44
# download exporter from provided feature build's client binary url
55
prepare-exporter:
6-
go test -v process_time_test.go -run TestPrepareUpdatedExporter -args -doRun=true -url=$(url)
6+
go test -v env_prepare_test.go -run TestPrepareUpdatedExporter -args -doRun=true -url=$(url)
77

88
prepare-base-exporter:
99
tar -xf postgres_exporter_percona.tar.xz

percona/env_prepare_test.go

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package upstream_update
2+
3+
import (
4+
"archive/tar"
5+
"compress/gzip"
6+
"io"
7+
"log"
8+
"net/http"
9+
"os"
10+
"os/exec"
11+
"strings"
12+
"testing"
13+
)
14+
15+
// TestPrepareExporters extracts exporter from client binary's tar.gz
16+
func TestPrepareUpdatedExporter(t *testing.T) {
17+
if doRun == nil || !*doRun {
18+
t.Skip("For manual runs only through make")
19+
return
20+
}
21+
22+
if url == nil || *url == "" {
23+
t.Error("URL not defined")
24+
return
25+
}
26+
27+
prepareExporter(*url, "postgres_exporter")
28+
}
29+
30+
func extractExporter(gzipStream io.Reader, fileName string) {
31+
uncompressedStream, err := gzip.NewReader(gzipStream)
32+
if err != nil {
33+
log.Fatal("ExtractTarGz: NewReader failed")
34+
}
35+
36+
tarReader := tar.NewReader(uncompressedStream)
37+
38+
exporterFound := false
39+
for !exporterFound {
40+
header, err := tarReader.Next()
41+
42+
if err == io.EOF {
43+
break
44+
}
45+
46+
if err != nil {
47+
log.Fatalf("ExtractTarGz: Next() failed: %s", err.Error())
48+
}
49+
50+
switch header.Typeflag {
51+
case tar.TypeDir:
52+
continue
53+
case tar.TypeReg:
54+
if strings.HasSuffix(header.Name, "postgres_exporter") {
55+
outFile, err := os.Create(fileName)
56+
if err != nil {
57+
log.Fatalf("ExtractTarGz: Create() failed: %s", err.Error())
58+
}
59+
defer outFile.Close()
60+
if _, err := io.Copy(outFile, tarReader); err != nil {
61+
log.Fatalf("ExtractTarGz: Copy() failed: %s", err.Error())
62+
}
63+
64+
exporterFound = true
65+
}
66+
default:
67+
log.Fatalf(
68+
"ExtractTarGz: uknown type: %d in %s",
69+
header.Typeflag,
70+
header.Name)
71+
}
72+
}
73+
}
74+
75+
func prepareExporter(url, fileName string) {
76+
resp, err := http.Get(url)
77+
if err != nil {
78+
log.Fatal(err)
79+
}
80+
81+
defer resp.Body.Close()
82+
83+
extractExporter(resp.Body, fileName)
84+
85+
err = exec.Command("chmod", "+x", fileName).Run()
86+
if err != nil {
87+
log.Fatal(err)
88+
}
89+
}

percona/process_time_test.go

Lines changed: 11 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package upstream_update
22

33
import (
4-
"archive/tar"
54
"bytes"
65
"compress/gzip"
76
"flag"
87
"fmt"
98
"io"
109
"io/ioutil"
11-
"log"
1210
"net"
1311
"net/http"
1412
"os"
@@ -38,7 +36,7 @@ const (
3836
portRangeEnd = 20100 // exporter web interface listening port
3937

4038
repeatCount = 5
41-
scrapesCount = 20
39+
scrapesCount = 50
4240
)
4341

4442
var doRun = flag.Bool("doRun", false, "")
@@ -75,12 +73,7 @@ func TestPerformance(t *testing.T) {
7573
original = doTestStats(t, repeatCount, scrapesCount, "../percona/postgres_exporter_percona")
7674
})
7775

78-
fmt.Println()
79-
fmt.Println(" \told\tnew\tdiff")
80-
fmt.Printf("CPU\t%.1f\t%.1f\t%+.0f%%\n", original.meanMs, updated.meanMs, calculatePerc(original.meanMs, updated.meanMs))
81-
fmt.Printf("HWM \t%.1f\t%.1f\t%+.0f%%\n", original.meanHwm, updated.meanHwm, calculatePerc(original.meanHwm, updated.meanHwm))
82-
fmt.Printf("DATA\t%.1f\t%.1f\t%+.0f%%\n", original.meanData, updated.meanData, calculatePerc(original.meanData, updated.meanData))
83-
fmt.Println()
76+
printStats(original, updated)
8477
}
8578

8679
func calculatePerc(base, updated float64) float64 {
@@ -91,97 +84,6 @@ func calculatePerc(base, updated float64) float64 {
9184
return diffPerc
9285
}
9386

94-
// TestPrepareExporters extracts exporter from client binary's tar.gz
95-
func TestPrepareUpdatedExporter(t *testing.T) {
96-
if doRun == nil || !*doRun {
97-
t.Skip("For manual runs only through make")
98-
return
99-
}
100-
101-
if url == nil || *url == "" {
102-
t.Error("URL not defined")
103-
return
104-
}
105-
106-
prepareExporter(*url, "postgres_exporter")
107-
}
108-
109-
// TestPrepareExporters extracts exporter from client binary's tar.gz
110-
func TestPreparePerconaExporter(t *testing.T) {
111-
if doRun == nil || !*doRun {
112-
t.Skip("For manual runs only through make")
113-
return
114-
}
115-
116-
if url == nil || *url == "" {
117-
t.Error("URL not defined")
118-
return
119-
}
120-
121-
prepareExporter(*url, "postgres_exporter_percona")
122-
}
123-
124-
func prepareExporter(url, fileName string) {
125-
resp, err := http.Get(url)
126-
if err != nil {
127-
log.Fatal(err)
128-
}
129-
130-
defer resp.Body.Close()
131-
132-
extractExporter(resp.Body, fileName)
133-
134-
err = exec.Command("chmod", "+x", fileName).Run()
135-
if err != nil {
136-
log.Fatal(err)
137-
}
138-
}
139-
140-
func extractExporter(gzipStream io.Reader, fileName string) {
141-
uncompressedStream, err := gzip.NewReader(gzipStream)
142-
if err != nil {
143-
log.Fatal("ExtractTarGz: NewReader failed")
144-
}
145-
146-
tarReader := tar.NewReader(uncompressedStream)
147-
148-
exporterFound := false
149-
for !exporterFound {
150-
header, err := tarReader.Next()
151-
152-
if err == io.EOF {
153-
break
154-
}
155-
156-
if err != nil {
157-
log.Fatalf("ExtractTarGz: Next() failed: %s", err.Error())
158-
}
159-
160-
switch header.Typeflag {
161-
case tar.TypeDir:
162-
continue
163-
case tar.TypeReg:
164-
if strings.HasSuffix(header.Name, "postgres_exporter") {
165-
outFile, err := os.Create(fileName)
166-
if err != nil {
167-
log.Fatalf("ExtractTarGz: Create() failed: %s", err.Error())
168-
}
169-
defer outFile.Close()
170-
if _, err := io.Copy(outFile, tarReader); err != nil {
171-
log.Fatalf("ExtractTarGz: Copy() failed: %s", err.Error())
172-
}
173-
174-
exporterFound = true
175-
}
176-
default:
177-
log.Fatalf(
178-
"ExtractTarGz: uknown type: %d in %s",
179-
header.Typeflag,
180-
header.Name)
181-
}
182-
}
183-
}
184-
18587
func doTestStats(t *testing.T, cnt int, size int, fileName string) *StatsData {
18688
var durations []float64
18789
var hwms []float64
@@ -401,6 +303,15 @@ func getCPUTime(pid int) (total int64) {
401303
return
402304
}
403305

306+
func printStats(original, updated *StatsData) {
307+
fmt.Println()
308+
fmt.Println(" \told\tnew\tdiff")
309+
fmt.Printf("CPU, ms \t%.1f\t%.1f\t%+.0f%%\n", original.meanMs, updated.meanMs, calculatePerc(original.meanMs, updated.meanMs))
310+
fmt.Printf("HWM, kB \t%.1f\t%.1f\t%+.0f%%\n", original.meanHwm, updated.meanHwm, calculatePerc(original.meanHwm, updated.meanHwm))
311+
fmt.Printf("DATA, kB\t%.1f\t%.1f\t%+.0f%%\n", original.meanData, updated.meanData, calculatePerc(original.meanData, updated.meanData))
312+
fmt.Println()
313+
}
314+
404315
func tryGetMetrics(port int) error {
405316
uri := fmt.Sprintf("http://127.0.0.1:%d/metrics", port)
406317
client := new(http.Client)

0 commit comments

Comments
 (0)