aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/pipewire/pod_test.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/internal/pipewire/pod_test.go b/internal/pipewire/pod_test.go
index 28e789f5..629bedcd 100644
--- a/internal/pipewire/pod_test.go
+++ b/internal/pipewire/pod_test.go
@@ -1,8 +1,11 @@
package pipewire_test
import (
+ "bytes"
"encoding"
+ "encoding/gob"
"encoding/json"
+ "io"
"reflect"
"testing"
@@ -66,6 +69,83 @@ func (testCases encodingTestCases[V, S]) run(t *testing.T) {
}
}
+var benchmarkSample = func() (sample pipewire.CoreInfo) {
+ if err := sample.UnmarshalBinary(samplePWContainer[1][0][1]); err != nil {
+ panic(err)
+ }
+ return
+}()
+
+func BenchmarkMarshal(b *testing.B) {
+ for b.Loop() {
+ if _, err := benchmarkSample.MarshalBinary(); err != nil {
+ b.Fatalf("MarshalBinary: error = %v", err)
+ }
+ }
+}
+
+func BenchmarkMarshalJSON(b *testing.B) {
+ for b.Loop() {
+ if _, err := json.Marshal(benchmarkSample); err != nil {
+ b.Fatalf("json.Marshal: error = %v", err)
+ }
+ }
+}
+
+func BenchmarkGobEncode(b *testing.B) {
+ e := gob.NewEncoder(io.Discard)
+ type sampleRaw pipewire.CoreInfo
+
+ for b.Loop() {
+ if err := e.Encode((*sampleRaw)(&benchmarkSample)); err != nil {
+ b.Fatalf("(*gob.Encoder).Encode: error = %v", err)
+ }
+ }
+}
+
+func BenchmarkUnmarshal(b *testing.B) {
+ var got pipewire.CoreInfo
+
+ for b.Loop() {
+ if err := got.UnmarshalBinary(samplePWContainer[1][0][1]); err != nil {
+ b.Fatalf("UnmarshalBinary: error = %v", err)
+ }
+ }
+}
+
+func BenchmarkUnmarshalJSON(b *testing.B) {
+ var got pipewire.CoreInfo
+ data, err := json.Marshal(benchmarkSample)
+ if err != nil {
+ b.Fatalf("json.Marshal: error = %v", err)
+ }
+
+ for b.Loop() {
+ if err = json.Unmarshal(data, &got); err != nil {
+ b.Fatalf("json.Unmarshal: error = %v", err)
+ }
+ }
+}
+
+func BenchmarkGobDecode(b *testing.B) {
+ type sampleRaw pipewire.CoreInfo
+ var buf bytes.Buffer
+ e := gob.NewEncoder(&buf)
+ d := gob.NewDecoder(&buf)
+
+ for b.Loop() {
+ b.StopTimer()
+ if err := e.Encode((*sampleRaw)(&benchmarkSample)); err != nil {
+ b.Fatalf("(*gob.Encoder).Encode: error = %v", err)
+ }
+ b.StartTimer()
+
+ if err := d.Decode(new(sampleRaw)); err != nil {
+ b.Fatalf("(*gob.Encoder).Decode: error = %v", err)
+ }
+ }
+}
+
// mustMarshalJSON calls [json.Marshal] and returns the result.
func mustMarshalJSON(v any) string {
if data, err := json.Marshal(v); err != nil {