Skip to content

Commit

Permalink
update work item
Browse files Browse the repository at this point in the history
  • Loading branch information
xlc committed Dec 16, 2024
1 parent c9838bc commit 0023860
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 10 deletions.
52 changes: 46 additions & 6 deletions Blockchain/Sources/Blockchain/Types/WorkItem.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,47 @@ import Utils
// I
public struct WorkItem: Sendable, Equatable, Codable {
public struct ImportedDataSegment: Sendable, Equatable, Codable {
public var root: Data32
public enum DataSegmentRootKind: Sendable, Equatable {
case segmentRoot(Data32)
case workPackageHash(Data32)
}

public var root: DataSegmentRootKind
public var index: UInt16

public init(root: Data32, index: UInt16) {
public init(root: DataSegmentRootKind, index: UInt16) {

Check warning on line 15 in Blockchain/Sources/Blockchain/Types/WorkItem.swift

View check run for this annotation

Codecov / codecov/patch

Blockchain/Sources/Blockchain/Types/WorkItem.swift#L15

Added line #L15 was not covered by tests
self.root = root
self.index = index
}

// Encodable
public func encode(to encoder: Encoder) throws {
var container = encoder.unkeyedContainer()
var indexValue = index
switch root {
case let .segmentRoot(root):
try container.encode(root)
case let .workPackageHash(hash):
try container.encode(hash)
indexValue |= 1 << 15
}
try container.encode(indexValue)
}

Check warning on line 32 in Blockchain/Sources/Blockchain/Types/WorkItem.swift

View check run for this annotation

Codecov / codecov/patch

Blockchain/Sources/Blockchain/Types/WorkItem.swift#L21-L32

Added lines #L21 - L32 were not covered by tests

// Decodable
public init(from decoder: Decoder) throws {
var container = try decoder.unkeyedContainer()
let root = try container.decode(Data32.self)
let index = try container.decode(UInt16.self)
let flag = index >> 15
if flag == 0 {
self.root = .segmentRoot(root)
self.index = index
} else {
self.root = .workPackageHash(root)
self.index = index & 0x7FFF
}
}

Check warning on line 47 in Blockchain/Sources/Blockchain/Types/WorkItem.swift

View check run for this annotation

Codecov / codecov/patch

Blockchain/Sources/Blockchain/Types/WorkItem.swift#L35-L47

Added lines #L35 - L47 were not covered by tests
}

// s
Expand All @@ -23,7 +57,10 @@ public struct WorkItem: Sendable, Equatable, Codable {
public var payloadBlob: Data

// g
public var gasLimit: Gas
public var refineGasLimit: Gas

// a
public var accumulateGasLimit: Gas

// i: a sequence of imported data segments which identify a prior exported segment through an index
public var inputs: [ImportedDataSegment]
Expand All @@ -38,15 +75,17 @@ public struct WorkItem: Sendable, Equatable, Codable {
serviceIndex: ServiceIndex,
codeHash: Data32,
payloadBlob: Data,
gasLimit: Gas,
refineGasLimit: Gas,
accumulateGasLimit: Gas,
inputs: [ImportedDataSegment],
outputs: [HashAndLength],
outputDataSegmentsCount: UInt16
) {
self.serviceIndex = serviceIndex
self.codeHash = codeHash
self.payloadBlob = payloadBlob
self.gasLimit = gasLimit
self.refineGasLimit = refineGasLimit
self.accumulateGasLimit = accumulateGasLimit

Check warning on line 88 in Blockchain/Sources/Blockchain/Types/WorkItem.swift

View check run for this annotation

Codecov / codecov/patch

Blockchain/Sources/Blockchain/Types/WorkItem.swift#L87-L88

Added lines #L87 - L88 were not covered by tests
self.inputs = inputs
self.outputs = outputs
self.outputDataSegmentsCount = outputDataSegmentsCount
Expand All @@ -60,7 +99,8 @@ extension WorkItem: Dummy {
serviceIndex: 0,
codeHash: Data32(),
payloadBlob: Data(),
gasLimit: Gas(0),
refineGasLimit: Gas(0),
accumulateGasLimit: Gas(0),

Check warning on line 103 in Blockchain/Sources/Blockchain/Types/WorkItem.swift

View check run for this annotation

Codecov / codecov/patch

Blockchain/Sources/Blockchain/Types/WorkItem.swift#L102-L103

Added lines #L102 - L103 were not covered by tests
inputs: [],
outputs: [],
outputDataSegmentsCount: 0
Expand Down
12 changes: 8 additions & 4 deletions JAMTests/Tests/JAMTests/CodecTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -297,14 +297,18 @@ struct CodecTests {

@Test
func work_item() throws {
let (actual, expected) = try Self.test(WorkItem.self, path: "work_item")
#expect(actual == expected)
withKnownIssue("need bump test vectors") {
let (actual, expected) = try Self.test(WorkItem.self, path: "work_item")
#expect(actual == expected)
}

Check warning on line 303 in JAMTests/Tests/JAMTests/CodecTests.swift

View check run for this annotation

Codecov / codecov/patch

JAMTests/Tests/JAMTests/CodecTests.swift#L302-L303

Added lines #L302 - L303 were not covered by tests
}

@Test
func work_package() throws {
let (actual, expected) = try Self.test(WorkPackage.self, path: "work_package")
#expect(actual == expected)
withKnownIssue("need bump test vectors") {
let (actual, expected) = try Self.test(WorkPackage.self, path: "work_package")
#expect(actual == expected)
}

Check warning on line 311 in JAMTests/Tests/JAMTests/CodecTests.swift

View check run for this annotation

Codecov / codecov/patch

JAMTests/Tests/JAMTests/CodecTests.swift#L310-L311

Added lines #L310 - L311 were not covered by tests
}

@Test
Expand Down

0 comments on commit 0023860

Please sign in to comment.