Skip to content

Commit

Permalink
replace gogoprotobuf's populate
Browse files Browse the repository at this point in the history
Now we generate instances using the reflect package.
Shortcomings are that enum generates values outside of the enum range and maps are not supported yet.
  • Loading branch information
awalterschulze committed Jan 22, 2025
1 parent 9970e14 commit 7166264
Show file tree
Hide file tree
Showing 25 changed files with 2,003 additions and 3,489 deletions.
662 changes: 279 additions & 383 deletions validator/gen-validator-tests/banana.pb.go

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion validator/gen-validator-tests/banana.proto
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import "github.com/gogo/protobuf/gogoproto/gogo.proto";
option (gogoproto.gostring_all) = true;
option (gogoproto.verbose_equal_all) = true;
option (gogoproto.equal_all) = true;
option (gogoproto.populate_all) = true;
option (gogoproto.stringer_all) = true;
option (gogoproto.goproto_enum_prefix_all) = false;
option (gogoproto.goproto_stringer_all) = false;
Expand Down
6 changes: 5 additions & 1 deletion validator/gen-validator-tests/banana_tests.go

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions validator/gen-validator-tests/bench.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,8 @@ type RandBytes func(r *rand.Rand) []byte
type RandProto func(r *rand.Rand) ProtoMessage

func RandomPerson(r *rand.Rand) ProtoMessage {
return NewPopulatedPerson(r, true)
person := random(r, &Person{})
return person.(ProtoMessage)
}

func RandomSrcTree(r *rand.Rand) ProtoMessage {
Expand All @@ -191,9 +192,9 @@ func RandomSrcTree(r *rand.Rand) ProtoMessage {
}

func RandomTypewriterPrison(r *rand.Rand) ProtoMessage {
return NewPopulatedTypewriterPrison(r, true)
return random(r, &TypewriterPrison{}).(ProtoMessage)
}

func RandomPuddingMilkshake(r *rand.Rand) ProtoMessage {
return NewPopulatedPuddingMilkshake(r, true)
return random(r, &PuddingMilkshake{}).(ProtoMessage)
}
598 changes: 242 additions & 356 deletions validator/gen-validator-tests/person.pb.go

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion validator/gen-validator-tests/person.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package main;

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option (gogoproto.populate_all) = true;
option (gogoproto.gostring_all) = true;

message Person {
Expand Down
23 changes: 10 additions & 13 deletions validator/gen-validator-tests/person_benches.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,32 @@ import (
func RandomValidContextPerson(r *rand.Rand) ProtoMessage {
p := RandomPerson(r).(*Person)
for len(p.Addresses) == 0 {
log.Printf("random invalid: ContextPerson")
log.Printf("random looped: ContextPerson")
p = RandomPerson(r).(*Person)
}
index := rand.Intn(len(p.Addresses))
p.Addresses[index].Number = proto.Int64(456)
p.Addresses[index].Street = proto.String("TheStreet")
log.Printf("random returned: ContextPerson")
return p
}

func RandomValidListIndexAddressPerson(r *rand.Rand) ProtoMessage {
p := RandomPerson(r).(*Person)
if len(p.Addresses) <= 1 {
for i := 0; i < rand.Intn(10)+2; i++ {
p.Addresses = append(p.Addresses, NewPopulatedAddress(r, true))
p.Addresses = append(p.Addresses, RandomAddress(r))
}
}
p.Addresses[len(p.Addresses)-2].Number = proto.Int64(2)
p.Addresses[len(p.Addresses)-1].Number = proto.Int64(1)
return p
}

func RandomAddress(r *rand.Rand) *Address {
return random(r, &Address{}).(*Address)
}

func RandomValidNilNamePerson(r *rand.Rand) ProtoMessage {
p := RandomPerson(r).(*Person)
p.Name = nil
Expand All @@ -57,22 +62,14 @@ func RandomValidLenNamePerson(r *rand.Rand) ProtoMessage {
return p
}

func randNonZeroString(r randyPerson) string {
l := r.Intn(100) + 1
tmps := make([]rune, l)
for i := 0; i < l; i++ {
tmps[i] = randUTF8RunePerson(r)
}
return string(tmps)
}

func RandomInvalidEmptyOrNilPerson(r *rand.Rand) ProtoMessage {
p := RandomPerson(r).(*Person)
for len(p.GetName()) == 0 {
log.Printf("random valid: EmptyOrNilPerson")
log.Printf("random looped: EmptyOrNilPerson")
nonzero := randNonZeroString(r)
p.Name = proto.String(nonzero)
}
log.Printf("random returned: EmptyOrNilPerson")
return p
}

Expand All @@ -89,7 +86,7 @@ func RandomValidEmptyOrNilPerson(r *rand.Rand) ProtoMessage {
func RandomValidNaiveNotNamePerson(r *rand.Rand) ProtoMessage {
p := RandomPerson(r).(*Person)
if p.Name == nil {
p.Name = proto.String(randStringPerson(r))
p.Name = proto.String(randString(r))
}
return p
}
Expand Down
1,583 changes: 508 additions & 1,075 deletions validator/gen-validator-tests/puddingmilkshake.pb.go

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion validator/gen-validator-tests/puddingmilkshake.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package main;

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

option (gogoproto.populate_all) = true;
option (gogoproto.gostring_all) = true;
option (gogoproto.description_all) = true;

Expand Down
16 changes: 4 additions & 12 deletions validator/gen-validator-tests/puddingmilkshake_benches.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ import (
func RandomValidBridgePepper(r *rand.Rand) ProtoMessage {
p := RandomPuddingMilkshake(r).(*PuddingMilkshake)
for p.GetFinanceJudo().GetSaladWorry().GetSpyCarpenter().GetBridgePepper() == nil {
log.Printf("random invalid: BridgePepper")
log.Printf("random looped: BridgePepper")
p = RandomPuddingMilkshake(r).(*PuddingMilkshake)
}
log.Printf("random returned: BridgePepper")
return p
}

Expand All @@ -40,21 +41,11 @@ func RandomInvalidBridgePepper(r *rand.Rand) ProtoMessage {
return p
}

func randStringWitha(r randyPerson) string {
l := r.Intn(100) + 1
tmps := make([]rune, l)
for i := 0; i < l; i++ {
tmps[i] = randUTF8RunePerson(r)
}
tmps[r.Intn(l)] = 'a'
return string(tmps)
}

func RandomValidBridgePepperAndFountainTarget(r *rand.Rand) ProtoMessage {
p := RandomPuddingMilkshake(r).(*PuddingMilkshake)
for len(p.GetFinanceJudo().GetSaladWorry().GetSpyCarpenter().GetBridgePepper()) == 0 ||
len(p.GetFinanceJudo().GetSaladWorry().GetSpyCarpenter().GetFountainTarget()) == 0 {
log.Printf("random invalid: BridgePepperAndFountainTarget")
log.Printf("random looped: BridgePepperAndFountainTarget")
p = RandomPuddingMilkshake(r).(*PuddingMilkshake)
}
// bp := p.GetFinanceJudo().GetSaladWorry().GetSpyCarpenter().GetBridgePepper()
Expand All @@ -67,6 +58,7 @@ func RandomValidBridgePepperAndFountainTarget(r *rand.Rand) ProtoMessage {
}
// p.FinanceJudo.SaladWorry.SpyCarpenter.BridgePepper[bpi] = "a"
// p.FinanceJudo.SaladWorry.SpyCarpenter.FountainTarget[fti] = "a"
log.Printf("random returned: BridgePepperAndFountainTarget")
return p
}

Expand Down
Loading

0 comments on commit 7166264

Please sign in to comment.