Skip to content

Commit

Permalink
Merge branch 'hperl/e2e-benchmark' into hperl/exp/vanguard
Browse files Browse the repository at this point in the history
  • Loading branch information
hperl committed Jan 8, 2025
2 parents 86404bf + 0d48e86 commit a94ef66
Showing 1 changed file with 50 additions and 28 deletions.
78 changes: 50 additions & 28 deletions internal/e2e/e2e_benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ import (
)

func BenchmarkE2E(b *testing.B) {

dsn := dbx.GetSqlite(b, dbx.SQLiteMemory)
dsn := dbx.GetSqlite(b, dbx.SQLiteFile)
ctx, reg, namespaceTestMgr, getAddr := newInitializedReg(b, dsn, map[string]interface{}{"log.level": "panic"})
closeServer := startServer(ctx, b, reg)
b.Cleanup(closeServer)
Expand All @@ -36,41 +35,64 @@ func BenchmarkE2E(b *testing.B) {
writeURL: "http://" + writeAddr,
oplSyntaxURL: "http://" + oplAddr,
},
&sdkClient{
readRemote: readAddr,
writeRemote: writeAddr,
syntaxRemote: oplAddr,
},
} {

b.Run(fmt.Sprintf("client=%T", cl), func(b *testing.B) {
n := &namespace.Namespace{Name: "test"}
namespaceTestMgr.add(b, n)
cl.waitUntilLive(b)
b.ResetTimer()
for i := 0; i < b.N; i++ {
tuple := &ketoapi.RelationTuple{
Namespace: n.Name,
Object: fmt.Sprintf("object %d for client %T", i, cl),
Relation: "access",
SubjectID: pointerx.Ptr("client"),
}
cl.createTuple(b, tuple)

resp := cl.queryTuple(b, &ketoapi.RelationQuery{Namespace: &tuple.Namespace})
require.Len(b, resp.RelationTuples, 1)
assert.Equal(b, tuple, resp.RelationTuples[0])
b.Run("create, query, check, batchCheck, delete", func(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
tuple := &ketoapi.RelationTuple{
Namespace: n.Name,
Object: fmt.Sprintf("object %d for client %T", i, cl),
Relation: "access",
SubjectID: pointerx.Ptr("client"),
}
cl.createTuple(b, tuple)

resp := cl.queryTuple(b, &ketoapi.RelationQuery{Namespace: &tuple.Namespace})
require.Len(b, resp.RelationTuples, 1)
assert.Equal(b, tuple, resp.RelationTuples[0])

assert.True(b, cl.check(b, tuple))
batchResult := cl.batchCheck(b, []*ketoapi.RelationTuple{tuple})
require.Len(b, batchResult, 1)
assert.True(b, batchResult[0].allowed)
assert.Empty(b, batchResult[0].errorMessage)
assert.True(b, cl.check(b, tuple))
batchResult := cl.batchCheck(b, []*ketoapi.RelationTuple{tuple})
require.Len(b, batchResult, 1)
assert.True(b, batchResult[0].allowed)
assert.Empty(b, batchResult[0].errorMessage)

cl.deleteTuple(b, tuple)
resp = cl.queryTuple(b, &ketoapi.RelationQuery{Namespace: &tuple.Namespace})
require.Len(b, resp.RelationTuples, 0)
}
cl.deleteTuple(b, tuple)
resp = cl.queryTuple(b, &ketoapi.RelationQuery{Namespace: &tuple.Namespace})
require.Len(b, resp.RelationTuples, 0)
}
})

b.Run("check subject expand", func(b *testing.B) {
cl.createTuple(b, &ketoapi.RelationTuple{
Namespace: n.Name,
Object: "obj",
Relation: "access",
SubjectSet: &ketoapi.SubjectSet{Namespace: n.Name, Object: "group", Relation: "member"},
})
cl.createTuple(b, &ketoapi.RelationTuple{
Namespace: n.Name,
Object: "group",
Relation: "member",
SubjectID: pointerx.Ptr("user"),
})
b.ResetTimer()
for i := 0; i < b.N; i++ {

assert.True(b, cl.check(b, &ketoapi.RelationTuple{
Namespace: n.Name,
Object: "obj",
Relation: "access",
SubjectID: pointerx.Ptr("user"),
}))
}
})
})
}

Expand Down

0 comments on commit a94ef66

Please sign in to comment.