File: benchmark_fetch_test.go

package info (click to toggle)
golang-github-protonmail-gluon 0.17.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 16,020 kB
  • sloc: sh: 55; makefile: 5
file content (101 lines) | stat: -rw-r--r-- 2,750 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package tests

import (
	"strconv"
	"testing"
)

func BenchmarkFetchDatabase(b *testing.B) {
	for n := 0; n < 15; n++ {
		mboxSize := 1 << n

		b.Run(strconv.Itoa(mboxSize), func(b *testing.B) {
			runOneToOneTestWithAuth(b, defaultServerOptions(b), func(c *testConnection, s *testSession) {
				benchID := s.mailboxCreated("user", []string{"BENCH"})

				for i := 0; i < mboxSize; i++ {
					s.messageCreatedFromFile("user", benchID, `testdata/multipart-mixed.eml`)
				}

				c.C(`A SELECT BENCH`)
				c.Se(`A OK [READ-WRITE] (^_^)`)

				c.doBench(b, `FETCH * (ENVELOPE)`)
				c.doBench(b, `FETCH 1:* (ENVELOPE)`)

				c.doBench(b, `FETCH * (FLAGS)`)
				c.doBench(b, `FETCH 1:* (FLAGS)`)

				c.doBench(b, `FETCH * (INTERNALDATE)`)
				c.doBench(b, `FETCH 1:* (INTERNALDATE)`)

				c.doBench(b, `FETCH * (BODY)`)
				c.doBench(b, `FETCH 1:* (BODY)`)

				c.doBench(b, `FETCH * (BODYSTRUCTURE)`)
				c.doBench(b, `FETCH 1:* (BODYSTRUCTURE)`)

				c.doBench(b, `FETCH * (RFC822.SIZE)`)
				c.doBench(b, `FETCH 1:* (RFC822.SIZE)`)

				c.doBench(b, `FETCH * (UID)`)
				c.doBench(b, `FETCH 1:* (UID)`)
			})
		})
	}
}

func BenchmarkFetchSingleCache(b *testing.B) {
	for n := 0; n < 15; n++ {
		mboxSize := 1 << n

		b.Run(strconv.Itoa(mboxSize), func(b *testing.B) {
			runOneToOneTestWithAuth(b, defaultServerOptions(b), func(c *testConnection, s *testSession) {
				benchID := s.mailboxCreated("user", []string{"BENCH"})

				for i := 0; i < mboxSize; i++ {
					s.messageCreatedFromFile("user", benchID, `testdata/multipart-mixed.eml`)
				}

				c.C(`Apply SELECT BENCH`)
				c.Se(`Apply OK [READ-WRITE] (^_^)`)

				c.doBench(b, `FETCH * (RFC822)`)
				c.doBench(b, `FETCH 1:* (RFC822)`)

				c.doBench(b, `FETCH * (RFC822.HEADER)`)
				c.doBench(b, `FETCH 1:* (RFC822.HEADER)`)

				c.doBench(b, `FETCH * (RFC822.TEXT)`)
				c.doBench(b, `FETCH 1:* (RFC822.TEXT)`)

				c.doBench(b, `FETCH * (BODY[HEADER])`)
				c.doBench(b, `FETCH 1:* (BODY[HEADER])`)

				c.doBench(b, `FETCH * (BODY[HEADER.FIELDS (To From Date)])`)
				c.doBench(b, `FETCH 1:* (BODY[HEADER.FIELDS (To From Date)])`)

				c.doBench(b, `FETCH * (BODY[HEADER.FIELDS.NOT (To From Date)])`)
				c.doBench(b, `FETCH 1:* (BODY[HEADER.FIELDS.NOT (To From Date)])`)

				c.doBench(b, `FETCH * (BODY[TEXT])`)
				c.doBench(b, `FETCH 1:* (BODY[TEXT])`)

				c.doBench(b, `FETCH * (BODY[])`)
				c.doBench(b, `FETCH 1:* (BODY[])`)

				c.doBench(b, `FETCH * (BODY[1])`)
				c.doBench(b, `FETCH 1:* (BODY[1])`)

				c.doBench(b, `FETCH * (BODY[2])`)
				c.doBench(b, `FETCH 1:* (BODY[2])`)

				c.doBench(b, `FETCH * (BODY[1.MIME])`)
				c.doBench(b, `FETCH 1:* (BODY[1.MIME])`)

				c.doBench(b, `FETCH * (BODY[2.MIME])`)
				c.doBench(b, `FETCH 1:* (BODY[2.MIME])`)
			})
		})
	}
}