Skip to content

Commit

Permalink
Merge pull request #3793 from oasisprotocol/ptrus/fix/simplfy-ugprade…
Browse files Browse the repository at this point in the history
…-descriptor

go/upgrade/api: simplify upgrade descriptor
  • Loading branch information
ptrus committed Mar 17, 2021
2 parents a39d1e1 + 461889e commit 48d14f0
Show file tree
Hide file tree
Showing 24 changed files with 284 additions and 526 deletions.
1 change: 1 addition & 0 deletions .changelog/3793.bugfix.md
@@ -0,0 +1 @@
go/upgrade/api: simplify upgrade descriptor
9 changes: 2 additions & 7 deletions go/common/version/version.go
Expand Up @@ -104,7 +104,6 @@ type ProtocolVersions struct {
RuntimeHostProtocol Version `json:"runtime_host_protocol"`
RuntimeCommitteeProtocol Version `json:"runtime_committee_protocol"`
ConsensusProtocol Version `json:"consensus_protocol"`
Toolchain Version `json:"toolchain"`
}

// Compatible returns if the two protocol versions are compatible.
Expand All @@ -118,17 +117,14 @@ func (pv *ProtocolVersions) Compatible(other ProtocolVersions) bool {
if pv.ConsensusProtocol.MaskNonMajor() != other.ConsensusProtocol.MaskNonMajor() {
return false
}
if pv.Toolchain.MaskNonMajor() != other.Toolchain.MaskNonMajor() {
return false
}
return true
}

// String returns the protocol versions as a string.
func (pv ProtocolVersions) String() string {
return fmt.Sprintf(
"Consensus protocol: %s, Runtime Host protocol: %s, Runtime Committee protocol: %s, Go toolchain: %s",
pv.ConsensusProtocol, pv.RuntimeHostProtocol, pv.RuntimeCommitteeProtocol, pv.Toolchain,
"Consensus protocol: %s, Runtime Host protocol: %s, Runtime Committee protocol: %s",
pv.ConsensusProtocol, pv.RuntimeHostProtocol, pv.RuntimeCommitteeProtocol,
)
}

Expand All @@ -137,7 +133,6 @@ var Versions = ProtocolVersions{
RuntimeHostProtocol,
RuntimeCommitteeProtocol,
ConsensusProtocol,
Toolchain,
}

func parseSemVerStr(s string) Version {
Expand Down
9 changes: 0 additions & 9 deletions go/common/version/version_test.go
Expand Up @@ -124,15 +124,6 @@ func TestProtocolVersionCompatible(t *testing.T) {
false,
"consensus protocol major version change is not compatible",
},
{
func() ProtocolVersions {
v := Versions
v.Toolchain.Major++
return v
},
false,
"toolchain major version change is not compatible",
},
{
func() ProtocolVersions {
v := Versions
Expand Down
106 changes: 39 additions & 67 deletions go/consensus/tendermint/apps/governance/genesis_test.go
Expand Up @@ -21,7 +21,14 @@ import (
upgrade "github.com/oasisprotocol/oasis-core/go/upgrade/api"
)

var identifier = cbor.Marshal(version.ProtocolVersions{ConsensusProtocol: version.FromU64(42)})
func baseAtEpoch(epoch beacon.EpochTime) upgrade.Descriptor {
return upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Handler: "base",
Target: version.Versions,
Epoch: epoch,
}
}

func TestInitChain(t *testing.T) {
require := require.New(t)
Expand Down Expand Up @@ -90,12 +97,11 @@ func TestInitChain(t *testing.T) {
ClosesAt: 20,
State: governance.StateRejected,
InvalidVotes: 3,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: baseAtEpoch(1),
},
}},
},
CreatedAt: 10,
Deposit: *quantity.NewFromUint64(10),
Submitter: addresses[0],
Expand All @@ -109,14 +115,11 @@ func TestInitChain(t *testing.T) {
ClosesAt: 20,
State: governance.StatePassed,
InvalidVotes: 0,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 30,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: baseAtEpoch(30),
},
}},
},
CreatedAt: 10,
Deposit: *quantity.NewFromUint64(10),
Submitter: addresses[1],
Expand Down Expand Up @@ -144,14 +147,11 @@ func TestInitChain(t *testing.T) {
ClosesAt: 100,
State: governance.StateActive,
InvalidVotes: 0,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 10000,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: baseAtEpoch(10000),
},
}},
},
CreatedAt: 20,
Deposit: *quantity.NewFromUint64(10),
Submitter: addresses[3],
Expand All @@ -164,12 +164,7 @@ func TestInitChain(t *testing.T) {
InvalidVotes: 0,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 1000,
},
Descriptor: baseAtEpoch(1000),
},
},
CreatedAt: 20,
Expand All @@ -187,12 +182,7 @@ func TestInitChain(t *testing.T) {
InvalidVotes: 0,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 2000,
},
Descriptor: baseAtEpoch(2000),
},
},
CreatedAt: 60,
Expand All @@ -208,14 +198,11 @@ func TestInitChain(t *testing.T) {
ClosesAt: 70,
State: governance.StatePassed,
InvalidVotes: 0,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 2000,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: baseAtEpoch(2000),
},
}},
},
CreatedAt: 60,
Deposit: *quantity.NewFromUint64(10),
Submitter: addresses[4],
Expand Down Expand Up @@ -328,15 +315,11 @@ func TestGenesis(t *testing.T) {
ClosesAt: 20,
State: governance.StateRejected,
InvalidVotes: 3,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{

Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 30,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: baseAtEpoch(30),
},
}},
},
CreatedAt: 10,
Deposit: *quantity.NewFromUint64(10),
Submitter: addresses[0],
Expand All @@ -350,14 +333,11 @@ func TestGenesis(t *testing.T) {
ClosesAt: 20,
State: governance.StatePassed,
InvalidVotes: 0,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 30,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: baseAtEpoch(30),
},
}},
},
CreatedAt: 10,
Deposit: *quantity.NewFromUint64(10),
Submitter: addresses[1],
Expand Down Expand Up @@ -385,14 +365,11 @@ func TestGenesis(t *testing.T) {
ClosesAt: 100,
State: governance.StateActive,
InvalidVotes: 0,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 10000,
Content: governance.ProposalContent{
Upgrade: &governance.UpgradeProposal{
Descriptor: baseAtEpoch(10000),
},
}},
},
CreatedAt: 20,
Deposit: *quantity.NewFromUint64(10),
Submitter: addresses[3],
Expand All @@ -404,12 +381,7 @@ func TestGenesis(t *testing.T) {
State: governance.StatePassed,
InvalidVotes: 0,
Content: governance.ProposalContent{Upgrade: &governance.UpgradeProposal{
Descriptor: upgrade.Descriptor{
Versioned: cbor.NewVersioned(upgrade.LatestDescriptorVersion),
Method: upgrade.UpgradeMethodInternal,
Identifier: identifier,
Epoch: 1000,
},
Descriptor: baseAtEpoch(10000),
}},
CreatedAt: 20,
Deposit: *quantity.NewFromUint64(10),
Expand Down

0 comments on commit 48d14f0

Please sign in to comment.