Skip to content
This repository has been archived by the owner on Sep 6, 2022. It is now read-only.

Commit

Permalink
Merge pull request #121 from SubstraFoundation/add_metadata_to_comput…
Browse files Browse the repository at this point in the history
…e_plan

Add metadata to compute plan
  • Loading branch information
jmorel authored Jul 3, 2020
2 parents 7b8bb36 + d4280dc commit 502b1cb
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 30 deletions.
28 changes: 21 additions & 7 deletions EXAMPLES.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Smart contract: `registerDataManager`
"authorizedIDs": [string] (required),
},
},
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"metadata": map (lte=100,dive,keys,lte=50,endkeys,lte=100),
}
```
##### Command peer example:
Expand Down Expand Up @@ -127,7 +127,7 @@ Smart contract: `registerObjective`
"authorizedIDs": [string] (required),
},
},
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"metadata": map (lte=100,dive,keys,lte=50,endkeys,lte=100),
}
```
##### Command peer example:
Expand Down Expand Up @@ -157,7 +157,7 @@ Smart contract: `registerAlgo`
"authorizedIDs": [string] (required),
},
},
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"metadata": map (lte=100,dive,keys,lte=50,endkeys,lte=100),
}
```
##### Command peer example:
Expand Down Expand Up @@ -317,7 +317,7 @@ Smart contract: `createTraintuple`
"computePlanID": string (omitempty),
"rank": string (omitempty),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"metadata": map (lte=100,dive,keys,lte=50,endkeys,lte=100),
}
```
##### Command peer example:
Expand All @@ -343,7 +343,7 @@ Smart contract: `createTraintuple`
"computePlanID": string (omitempty),
"rank": string (omitempty),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"metadata": map (lte=100,dive,keys,lte=50,endkeys,lte=100),
}
```
##### Command peer example:
Expand Down Expand Up @@ -1351,19 +1351,22 @@ Smart contract: `createComputePlan`
```go
{
"tag": string (omitempty,lte=64),
"metadata": map (lte=100,dive,keys,lte=50,endkeys,lte=100),
"traintuples": (omitempty) [{
"dataManagerKey": string (required,len=64,hexadecimal),
"dataSampleKeys": [string] (required,dive,len=64,hexadecimal),
"algoKey": string (required,len=64,hexadecimal),
"id": string (required,lte=64),
"inModelsIDs": [string] (omitempty,dive,lte=64),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
}],
"aggregatetuples": (omitempty) [{
"algoKey": string (required,len=64,hexadecimal),
"id": string (required,lte=64),
"inModelsIDs": [string] (omitempty,dive,lte=64),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"worker": string (required),
}],
"compositeTraintuples": (omitempty) [{
Expand All @@ -1380,19 +1383,21 @@ Smart contract: `createComputePlan`
},
},
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
}],
"testtuples": (omitempty) [{
"dataManagerKey": string (omitempty,len=64,hexadecimal),
"dataSampleKeys": [string] (omitempty,dive,len=64,hexadecimal),
"objectiveKey": string (required,len=64,hexadecimal),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"traintupleID": string (required,lte=64),
}],
}
```
##### Command peer example:
```bash
peer chaincode invoke -n mycc -c '{"Args":["createComputePlan","{\"cleanModels\":false,\"tag\":\"a tag is simply a string\",\"traintuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"firstTraintupleID\",\"inModelsIDs\":null,\"tag\":\"\"},{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"secondTraintupleID\",\"inModelsIDs\":[\"firstTraintupleID\"],\"tag\":\"\"}],\"aggregatetuples\":null,\"compositeTraintuples\":null,\"testtuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"bb1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"bb2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"objectiveKey\":\"5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379\",\"tag\":\"\",\"traintupleID\":\"secondTraintupleID\"}]}"]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["createComputePlan","{\"cleanModels\":false,\"tag\":\"a tag is simply a string\",\"metadata\":null,\"traintuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"firstTraintupleID\",\"inModelsIDs\":null,\"tag\":\"\",\"metadata\":null},{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"secondTraintupleID\",\"inModelsIDs\":[\"firstTraintupleID\"],\"tag\":\"\",\"metadata\":null}],\"aggregatetuples\":null,\"compositeTraintuples\":null,\"testtuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"bb1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"bb2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"objectiveKey\":\"5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379\",\"tag\":\"\",\"metadata\":null,\"traintupleID\":\"secondTraintupleID\"}]}"]}' -C myc
```
##### Command output:
```json
Expand All @@ -1406,6 +1411,7 @@ peer chaincode invoke -n mycc -c '{"Args":["createComputePlan","{\"cleanModels\"
"compositeTraintupleKeys": null,
"computePlanID": "7dd808239c1e062399449bd11b634d9bd1fd0a2b795ad345b62f95b4933bfa17",
"doneCount": 0,
"metadata": {},
"status": "todo",
"tag": "a tag is simply a string",
"testtupleKeys": [
Expand All @@ -1432,12 +1438,14 @@ Smart contract: `updateComputePlan`
"id": string (required,lte=64),
"inModelsIDs": [string] (omitempty,dive,lte=64),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
}],
"aggregatetuples": (omitempty) [{
"algoKey": string (required,len=64,hexadecimal),
"id": string (required,lte=64),
"inModelsIDs": [string] (omitempty,dive,lte=64),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"worker": string (required),
}],
"compositeTraintuples": (omitempty) [{
Expand All @@ -1454,19 +1462,21 @@ Smart contract: `updateComputePlan`
},
},
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
}],
"testtuples": (omitempty) [{
"dataManagerKey": string (omitempty,len=64,hexadecimal),
"dataSampleKeys": [string] (omitempty,dive,len=64,hexadecimal),
"objectiveKey": string (required,len=64,hexadecimal),
"tag": string (omitempty,lte=64),
"metadata": map (omitempty,lte=100,dive,keys,lte=50,endkeys,lte=100),
"traintupleID": string (required,lte=64),
}],
}
```
##### Command peer example:
```bash
peer chaincode invoke -n mycc -c '{"Args":["updateComputePlan","{\"computePlanID\":\"7dd808239c1e062399449bd11b634d9bd1fd0a2b795ad345b62f95b4933bfa17\",\"traintuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"thirdTraintupleID\",\"inModelsIDs\":[\"firstTraintupleID\",\"secondTraintupleID\"],\"tag\":\"\"}],\"aggregatetuples\":null,\"compositeTraintuples\":null,\"testtuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"bb1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"bb2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"objectiveKey\":\"5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379\",\"tag\":\"\",\"traintupleID\":\"thirdTraintupleID\"}]}"]}' -C myc
peer chaincode invoke -n mycc -c '{"Args":["updateComputePlan","{\"computePlanID\":\"7dd808239c1e062399449bd11b634d9bd1fd0a2b795ad345b62f95b4933bfa17\",\"traintuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"thirdTraintupleID\",\"inModelsIDs\":[\"firstTraintupleID\",\"secondTraintupleID\"],\"tag\":\"\",\"metadata\":null}],\"aggregatetuples\":null,\"compositeTraintuples\":null,\"testtuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"bb1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"bb2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"objectiveKey\":\"5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379\",\"tag\":\"\",\"metadata\":null,\"traintupleID\":\"thirdTraintupleID\"}]}"]}' -C myc
```
##### Command output:
```json
Expand All @@ -1479,6 +1489,7 @@ peer chaincode invoke -n mycc -c '{"Args":["updateComputePlan","{\"computePlanID
"compositeTraintupleKeys": null,
"computePlanID": "7dd808239c1e062399449bd11b634d9bd1fd0a2b795ad345b62f95b4933bfa17",
"doneCount": 0,
"metadata": {},
"status": "todo",
"tag": "a tag is simply a string",
"testtupleKeys": [
Expand Down Expand Up @@ -1578,6 +1589,7 @@ peer chaincode invoke -n mycc -c '{"Args":["queryComputePlan","{\"key\":\"7dd808
"compositeTraintupleKeys": null,
"computePlanID": "7dd808239c1e062399449bd11b634d9bd1fd0a2b795ad345b62f95b4933bfa17",
"doneCount": 0,
"metadata": {},
"status": "todo",
"tag": "a tag is simply a string",
"testtupleKeys": [
Expand Down Expand Up @@ -1606,6 +1618,7 @@ peer chaincode invoke -n mycc -c '{"Args":["queryComputePlans"]}' -C myc
"compositeTraintupleKeys": null,
"computePlanID": "7dd808239c1e062399449bd11b634d9bd1fd0a2b795ad345b62f95b4933bfa17",
"doneCount": 0,
"metadata": {},
"status": "todo",
"tag": "a tag is simply a string",
"testtupleKeys": [
Expand Down Expand Up @@ -1643,6 +1656,7 @@ peer chaincode invoke -n mycc -c '{"Args":["cancelComputePlan","{\"key\":\"7dd80
"compositeTraintupleKeys": null,
"computePlanID": "7dd808239c1e062399449bd11b634d9bd1fd0a2b795ad345b62f95b4933bfa17",
"doneCount": 0,
"metadata": {},
"status": "canceled",
"tag": "a tag is simply a string",
"testtupleKeys": [
Expand Down
9 changes: 7 additions & 2 deletions chaincode/compute_plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func (inpTraintuple *inputTraintuple) Fill(inpCP inputComputePlanTraintuple, IDT
inpTraintuple.DataSampleKeys = inpCP.DataSampleKeys
inpTraintuple.AlgoKey = inpCP.AlgoKey
inpTraintuple.Tag = inpCP.Tag
inpTraintuple.Metadata = inpCP.Metadata

// Set the inModels by matching the id to tuples key previously
// encontered in this compute plan
Expand All @@ -41,6 +42,7 @@ func (inpTraintuple *inputTraintuple) Fill(inpCP inputComputePlanTraintuple, IDT
func (inpAggregatetuple *inputAggregatetuple) Fill(inpCP inputComputePlanAggregatetuple, IDToTrainTask map[string]TrainTask) error {
inpAggregatetuple.AlgoKey = inpCP.AlgoKey
inpAggregatetuple.Tag = inpCP.Tag
inpAggregatetuple.Metadata = inpCP.Metadata
inpAggregatetuple.Worker = inpCP.Worker

// Set the inModels by matching the id to tuples key previously
Expand All @@ -61,6 +63,7 @@ func (inpCompositeTraintuple *inputCompositeTraintuple) Fill(inpCP inputComputeP
inpCompositeTraintuple.DataSampleKeys = inpCP.DataSampleKeys
inpCompositeTraintuple.AlgoKey = inpCP.AlgoKey
inpCompositeTraintuple.Tag = inpCP.Tag
inpCompositeTraintuple.Metadata = inpCP.Metadata
inpCompositeTraintuple.OutTrunkModelPermissions = inpCP.OutTrunkModelPermissions

// Set the inModels by matching the id to traintuples key previously
Expand Down Expand Up @@ -93,6 +96,7 @@ func (inpTesttuple *inputTesttuple) Fill(inpCP inputComputePlanTesttuple, IDToTr
inpTesttuple.DataManagerKey = inpCP.DataManagerKey
inpTesttuple.DataSampleKeys = inpCP.DataSampleKeys
inpTesttuple.Tag = inpCP.Tag
inpTesttuple.Metadata = inpCP.Metadata
inpTesttuple.ObjectiveKey = inpCP.ObjectiveKey

return nil
Expand All @@ -105,7 +109,7 @@ func createComputePlan(db *LedgerDB, args []string) (resp outputComputePlan, err
if err != nil {
return
}
return createComputePlanInternal(db, inp.inputComputePlan, inp.Tag, inp.CleanModels)
return createComputePlanInternal(db, inp.inputComputePlan, inp.Tag, inp.Metadata, inp.CleanModels)
}

func updateComputePlan(db *LedgerDB, args []string) (resp outputComputePlan, err error) {
Expand All @@ -125,10 +129,11 @@ func updateComputePlan(db *LedgerDB, args []string) (resp outputComputePlan, err
return updateComputePlanInternal(db, inp.ComputePlanID, inp.inputComputePlan)
}

func createComputePlanInternal(db *LedgerDB, inp inputComputePlan, tag string, cleanModels bool) (resp outputComputePlan, err error) {
func createComputePlanInternal(db *LedgerDB, inp inputComputePlan, tag string, metadata map[string]string, cleanModels bool) (resp outputComputePlan, err error) {
var computePlan ComputePlan
computePlan.State.Status = StatusWaiting
computePlan.Tag = tag
computePlan.Metadata = metadata
computePlan.CleanModels = cleanModels
ID, err := computePlan.Create(db)
if err != nil {
Expand Down
28 changes: 14 additions & 14 deletions chaincode/compute_plan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ func TestModelCompositionComputePlanWorkflow(t *testing.T) {
mockStub.MockTransactionStart("42")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, false)
out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.NotNil(t, db.event)
assert.Len(t, db.event.CompositeTraintuples, 2)
Expand Down Expand Up @@ -285,7 +285,7 @@ func TestCreateComputePlanCompositeAggregate(t *testing.T) {
},
}

outCP, err := createComputePlanInternal(db, inCP, tag, false)
outCP, err := createComputePlanInternal(db, inCP, tag, map[string]string{}, false)
assert.NoError(t, err)

// Check the composite traintuples
Expand Down Expand Up @@ -327,7 +327,7 @@ func TestCreateComputePlan(t *testing.T) {

// Simply test method and return values
inCP := defaultComputePlan
outCP, err := createComputePlanInternal(db, inCP, tag, false)
outCP, err := createComputePlanInternal(db, inCP, tag, map[string]string{}, false)
assert.NoError(t, err)
validateDefaultComputePlan(t, outCP)

Expand Down Expand Up @@ -380,7 +380,7 @@ func TestQueryComputePlan(t *testing.T) {

// Simply test method and return values
inCP := defaultComputePlan
outCP, err := createComputePlanInternal(db, inCP, tag, false)
outCP, err := createComputePlanInternal(db, inCP, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.NotNil(t, outCP)

Expand All @@ -400,7 +400,7 @@ func TestQueryComputePlans(t *testing.T) {

// Simply test method and return values
inCP := defaultComputePlan
outCP, err := createComputePlanInternal(db, inCP, tag, false)
outCP, err := createComputePlanInternal(db, inCP, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.NotNil(t, outCP)

Expand Down Expand Up @@ -448,7 +448,7 @@ func TestComputePlanEmptyTesttuples(t *testing.T) {
Testtuples: []inputComputePlanTesttuple{},
}

outCP, err := createComputePlanInternal(db, inCP, tag, false)
outCP, err := createComputePlanInternal(db, inCP, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.NotNil(t, outCP)
assert.Len(t, outCP.TesttupleKeys, 0)
Expand Down Expand Up @@ -485,7 +485,7 @@ func TestCancelComputePlan(t *testing.T) {
mockStub.MockTransactionStart("42")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, false)
out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.NotNil(t, db.event)
assert.Len(t, db.event.CompositeTraintuples, 2)
Expand Down Expand Up @@ -527,7 +527,7 @@ func TestStartedTuplesOfCanceledComputePlan(t *testing.T) {
mockStub.MockTransactionStart("42")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, false)
out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, map[string]string{}, false)
assert.NoError(t, err)

logStartCompositeTrain(db, assetToArgs(inputKey{out.CompositeTraintupleKeys[0]}))
Expand Down Expand Up @@ -559,7 +559,7 @@ func TestLogSuccessAfterCancel(t *testing.T) {
mockStub.MockTransactionStart("42")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, false)
out, err := createComputePlanInternal(db, modelCompositionComputePlan, tag, map[string]string{}, false)
assert.NoError(t, err)

logStartCompositeTrain(db, assetToArgs(inputKey{out.CompositeTraintupleKeys[0]}))
Expand Down Expand Up @@ -603,7 +603,7 @@ func TestComputePlanMetrics(t *testing.T) {
mockStub.MockTransactionStart("42")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, defaultComputePlan, tag, false)
out, err := createComputePlanInternal(db, defaultComputePlan, tag, map[string]string{}, false)
assert.NoError(t, err)
checkComputePlanMetrics(t, db, out.ComputePlanID, 0, 3)

Expand Down Expand Up @@ -655,7 +655,7 @@ func TestUpdateComputePlan(t *testing.T) {
registerItem(t, *mockStub, "aggregateAlgo")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, inputComputePlan{}, tag, false)
out, err := createComputePlanInternal(db, inputComputePlan{}, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.Equal(t, tag, out.Tag)

Expand Down Expand Up @@ -705,7 +705,7 @@ func TestCleanModels(t *testing.T) {
registerItem(t, *mockStub, "aggregateAlgo")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, defaultComputePlan, tag, true)
out, err := createComputePlanInternal(db, defaultComputePlan, tag, map[string]string{}, true)
assert.NoError(t, err)
// Just created the compute plan so not in the event
assert.Len(t, db.event.ComputePlans, 0)
Expand Down Expand Up @@ -741,7 +741,7 @@ func TestCreateSameComputePlanTwice(t *testing.T) {
registerItem(t, *mockStub, "aggregateAlgo")
db := NewLedgerDB(mockStub)

out, err := createComputePlanInternal(db, inputComputePlan{}, tag, false)
out, err := createComputePlanInternal(db, inputComputePlan{}, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.Equal(t, tag, out.Tag)

Expand Down Expand Up @@ -782,7 +782,7 @@ func TestCreateSameComputePlanTwice(t *testing.T) {
assert.NoError(t, err)

// Upload the same tuples inside another compute plan
out, err = createComputePlanInternal(db, inputComputePlan{}, tag, false)
out, err = createComputePlanInternal(db, inputComputePlan{}, tag, map[string]string{}, false)
assert.NoError(t, err)
assert.Equal(t, tag, out.Tag)

Expand Down
Loading

0 comments on commit 502b1cb

Please sign in to comment.