Merge pull request #1 from Bloxico/repo_test

Tests
This commit is contained in:
Menko 2021-11-03 21:44:04 +01:00 committed by GitHub
commit f01015bac5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 43 additions and 0 deletions

View File

@ -24,6 +24,7 @@ func TestDefaultFullNodeRoundtrip(t *testing.T) {
s = buf.String() s = buf.String()
} }
//stm: @NODE_CONFIG_003
c2, err := FromReader(strings.NewReader(s), DefaultFullNode()) c2, err := FromReader(strings.NewReader(s), DefaultFullNode())
require.NoError(t, err) require.NoError(t, err)
@ -45,6 +46,7 @@ func TestDefaultMinerRoundtrip(t *testing.T) {
s = buf.String() s = buf.String()
} }
//stm: @NODE_CONFIG_004
c2, err := FromReader(strings.NewReader(s), DefaultStorageMiner()) c2, err := FromReader(strings.NewReader(s), DefaultStorageMiner())
require.NoError(t, err) require.NoError(t, err)

View File

@ -1,3 +1,4 @@
//stm: #unit
package config package config
import ( import (
@ -14,6 +15,7 @@ func TestDecodeNothing(t *testing.T) {
assert := assert.New(t) assert := assert.New(t)
{ {
//stm: @NODE_CONFIG_001
cfg, err := FromFile(os.DevNull, DefaultFullNode()) cfg, err := FromFile(os.DevNull, DefaultFullNode())
assert.Nil(err, "error should be nil") assert.Nil(err, "error should be nil")
assert.Equal(DefaultFullNode(), cfg, assert.Equal(DefaultFullNode(), cfg,
@ -21,6 +23,7 @@ func TestDecodeNothing(t *testing.T) {
} }
{ {
//stm: @NODE_CONFIG_002
cfg, err := FromFile("./does-not-exist.toml", DefaultFullNode()) cfg, err := FromFile("./does-not-exist.toml", DefaultFullNode())
assert.Nil(err, "error should be nil") assert.Nil(err, "error should be nil")
assert.Equal(DefaultFullNode(), cfg, assert.Equal(DefaultFullNode(), cfg,

View File

@ -1,3 +1,4 @@
//stm: #unit
package client package client
import ( import (
@ -44,10 +45,12 @@ func TestImportLocal(t *testing.T) {
b, err := testdata.ReadFile("testdata/payload.txt") b, err := testdata.ReadFile("testdata/payload.txt")
require.NoError(t, err) require.NoError(t, err)
//stm: @CLIENT_IMPORT_003
root, err := a.ClientImportLocal(ctx, bytes.NewReader(b)) root, err := a.ClientImportLocal(ctx, bytes.NewReader(b))
require.NoError(t, err) require.NoError(t, err)
require.NotEqual(t, cid.Undef, root) require.NotEqual(t, cid.Undef, root)
//stm: @CLIENT_IMPORT_004
list, err := a.ClientListImports(ctx) list, err := a.ClientListImports(ctx)
require.NoError(t, err) require.NoError(t, err)
require.Len(t, list, 1) require.Len(t, list, 1)
@ -68,6 +71,7 @@ func TestImportLocal(t *testing.T) {
// retrieve as UnixFS. // retrieve as UnixFS.
out1 := filepath.Join(dir, "retrieval1.data") // as unixfs out1 := filepath.Join(dir, "retrieval1.data") // as unixfs
out2 := filepath.Join(dir, "retrieval2.data") // as car out2 := filepath.Join(dir, "retrieval2.data") // as car
//stm: @CLIENT_IMPORT_005
err = a.ClientRetrieve(ctx, order, &api.FileRef{ err = a.ClientRetrieve(ctx, order, &api.FileRef{
Path: out1, Path: out1,
}) })
@ -84,6 +88,7 @@ func TestImportLocal(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
// open the CARv2 being custodied by the import manager // open the CARv2 being custodied by the import manager
//stm: @CLIENT_IMPORT_006
orig, err := carv2.OpenReader(it.CARPath) orig, err := carv2.OpenReader(it.CARPath)
require.NoError(t, err) require.NoError(t, err)
@ -94,6 +99,7 @@ func TestImportLocal(t *testing.T) {
require.EqualValues(t, 1, exported.Version) require.EqualValues(t, 1, exported.Version)
require.EqualValues(t, 2, orig.Version) require.EqualValues(t, 2, orig.Version)
//stm: @CLIENT_IMPORT_007
origRoots, err := orig.Roots() origRoots, err := orig.Roots()
require.NoError(t, err) require.NoError(t, err)
require.Len(t, origRoots, 1) require.Len(t, origRoots, 1)

View File

@ -1,3 +1,4 @@
//stm: #unit
package client package client
import ( import (
@ -35,11 +36,13 @@ func TestRoundtripUnixFS_Dense(t *testing.T) {
defer os.Remove(carv2File) //nolint:errcheck defer os.Remove(carv2File) //nolint:errcheck
// import a file to a Unixfs DAG using a CARv2 read/write blockstore. // import a file to a Unixfs DAG using a CARv2 read/write blockstore.
//stm: @CLIENT_IMPORT_001, @CLIENT_BLOCKSTORE_001
bs, err := blockstore.OpenReadWrite(carv2File, nil, bs, err := blockstore.OpenReadWrite(carv2File, nil,
carv2.ZeroLengthSectionAsEOF(true), carv2.ZeroLengthSectionAsEOF(true),
blockstore.UseWholeCIDs(true)) blockstore.UseWholeCIDs(true))
require.NoError(t, err) require.NoError(t, err)
//stm: @CLIENT_IMPORT_001
root, err := buildUnixFS(ctx, bytes.NewBuffer(inputContents), bs, false) root, err := buildUnixFS(ctx, bytes.NewBuffer(inputContents), bs, false)
require.NoError(t, err) require.NoError(t, err)
require.NotEqual(t, cid.Undef, root) require.NotEqual(t, cid.Undef, root)
@ -85,11 +88,13 @@ func TestRoundtripUnixFS_Filestore(t *testing.T) {
dst := newTmpFile(t) dst := newTmpFile(t)
defer os.Remove(dst) //nolint:errcheck defer os.Remove(dst) //nolint:errcheck
//stm: @CLIENT_FS_001
root, err := a.createUnixFSFilestore(ctx, inputPath, dst) root, err := a.createUnixFSFilestore(ctx, inputPath, dst)
require.NoError(t, err) require.NoError(t, err)
require.NotEqual(t, cid.Undef, root) require.NotEqual(t, cid.Undef, root)
// convert the CARv2 to a normal file again and ensure the contents match // convert the CARv2 to a normal file again and ensure the contents match
//stm: @CLIENT_FS_002
fs, err := stores.ReadOnlyFilestore(dst) fs, err := stores.ReadOnlyFilestore(dst)
require.NoError(t, err) require.NoError(t, err)
defer fs.Close() //nolint:errcheck defer fs.Close() //nolint:errcheck
@ -116,6 +121,7 @@ func TestRoundtripUnixFS_Filestore(t *testing.T) {
} }
func newTmpFile(t *testing.T) string { func newTmpFile(t *testing.T) string {
//stm: @CLIENT_FS_003
f, err := os.CreateTemp("", "") f, err := os.CreateTemp("", "")
require.NoError(t, err) require.NoError(t, err)
require.NoError(t, f.Close()) require.NoError(t, f.Close())
@ -123,6 +129,7 @@ func newTmpFile(t *testing.T) string {
} }
func genInputFile(t *testing.T) (filepath string, contents []byte) { func genInputFile(t *testing.T) (filepath string, contents []byte) {
//stm: @CLIENT_FS_004
s := strings.Repeat("abcde", 100) s := strings.Repeat("abcde", 100)
tmp, err := os.CreateTemp("", "") tmp, err := os.CreateTemp("", "")
require.NoError(t, err) require.NoError(t, err)

View File

@ -1,3 +1,4 @@
//stm: #unit
package full package full
import ( import (
@ -12,6 +13,7 @@ import (
) )
func TestMedian(t *testing.T) { func TestMedian(t *testing.T) {
//stm: @REPO_GAS_001
require.Equal(t, types.NewInt(5), medianGasPremium([]GasMeta{ require.Equal(t, types.NewInt(5), medianGasPremium([]GasMeta{
{big.NewInt(5), build.BlockGasTarget}, {big.NewInt(5), build.BlockGasTarget},
}, 1)) }, 1))

View File

@ -1,3 +1,4 @@
//stm: #unit
package repo package repo
import ( import (
@ -12,11 +13,13 @@ func genFsRepo(t *testing.T) (*FsRepo, func()) {
t.Fatal(err) t.Fatal(err)
} }
//stm: @REPO_FS_001
repo, err := NewFS(path) repo, err := NewFS(path)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
//stm: @REPO_FS_002
err = repo.Init(FullNode) err = repo.Init(FullNode)
if err != ErrRepoExists && err != nil { if err != ErrRepoExists && err != nil {
t.Fatal(err) t.Fatal(err)
@ -29,5 +32,6 @@ func genFsRepo(t *testing.T) (*FsRepo, func()) {
func TestFsBasic(t *testing.T) { func TestFsBasic(t *testing.T) {
repo, closer := genFsRepo(t) repo, closer := genFsRepo(t)
defer closer() defer closer()
//stm: @REPO_FS_003
basicTest(t, repo) basicTest(t, repo)
} }

View File

@ -1,3 +1,4 @@
//stm: #unit
package repo package repo
import ( import (
@ -6,5 +7,6 @@ import (
func TestMemBasic(t *testing.T) { func TestMemBasic(t *testing.T) {
repo := NewMemory(nil) repo := NewMemory(nil)
//stm: @REPO_MEM_001
basicTest(t, repo) basicTest(t, repo)
} }

View File

@ -1,3 +1,4 @@
//stm: #unit
package repo package repo
import ( import (
@ -14,17 +15,20 @@ import (
) )
func basicTest(t *testing.T, repo Repo) { func basicTest(t *testing.T, repo Repo) {
//stm: @REPO_NET_001
apima, err := repo.APIEndpoint() apima, err := repo.APIEndpoint()
if assert.Error(t, err) { if assert.Error(t, err) {
assert.Equal(t, ErrNoAPIEndpoint, err) assert.Equal(t, ErrNoAPIEndpoint, err)
} }
assert.Nil(t, apima, "with no api endpoint, return should be nil") assert.Nil(t, apima, "with no api endpoint, return should be nil")
//stm: @REPO_MUT_001
lrepo, err := repo.Lock(FullNode) lrepo, err := repo.Lock(FullNode)
assert.NoError(t, err, "should be able to lock once") assert.NoError(t, err, "should be able to lock once")
assert.NotNil(t, lrepo, "locked repo shouldn't be nil") assert.NotNil(t, lrepo, "locked repo shouldn't be nil")
{ {
//stm: @REPO_MUT_002
lrepo2, err := repo.Lock(FullNode) lrepo2, err := repo.Lock(FullNode)
if assert.Error(t, err) { if assert.Error(t, err) {
assert.Equal(t, ErrRepoAlreadyLocked, err) assert.Equal(t, ErrRepoAlreadyLocked, err)
@ -32,6 +36,7 @@ func basicTest(t *testing.T, repo Repo) {
assert.Nil(t, lrepo2, "with locked repo errors, nil should be returned") assert.Nil(t, lrepo2, "with locked repo errors, nil should be returned")
} }
//stm: @REPO_MUT_003
err = lrepo.Close() err = lrepo.Close()
assert.NoError(t, err, "should be able to unlock") assert.NoError(t, err, "should be able to unlock")
@ -42,6 +47,7 @@ func basicTest(t *testing.T, repo Repo) {
ma, err := multiaddr.NewMultiaddr("/ip4/127.0.0.1/tcp/43244") ma, err := multiaddr.NewMultiaddr("/ip4/127.0.0.1/tcp/43244")
assert.NoError(t, err, "creating multiaddr shouldn't error") assert.NoError(t, err, "creating multiaddr shouldn't error")
//stm: @REPO_NET_002
err = lrepo.SetAPIEndpoint(ma) err = lrepo.SetAPIEndpoint(ma)
assert.NoError(t, err, "setting multiaddr shouldn't error") assert.NoError(t, err, "setting multiaddr shouldn't error")
@ -69,6 +75,7 @@ func basicTest(t *testing.T, repo Repo) {
err = lrepo.Close() err = lrepo.Close()
assert.NoError(t, err, "should be able to close") assert.NoError(t, err, "should be able to close")
//stm: @REPO_NET_003
apima, err = repo.APIEndpoint() apima, err = repo.APIEndpoint()
if assert.Error(t, err) { if assert.Error(t, err) {
@ -83,22 +90,27 @@ func basicTest(t *testing.T, repo Repo) {
assert.NoError(t, err, "should be able to relock") assert.NoError(t, err, "should be able to relock")
assert.NotNil(t, lrepo, "locked repo shouldn't be nil") assert.NotNil(t, lrepo, "locked repo shouldn't be nil")
//stm: @REPO_KEYSTR_001
kstr, err := lrepo.KeyStore() kstr, err := lrepo.KeyStore()
assert.NoError(t, err, "should be able to get keystore") assert.NoError(t, err, "should be able to get keystore")
assert.NotNil(t, lrepo, "keystore shouldn't be nil") assert.NotNil(t, lrepo, "keystore shouldn't be nil")
//stm: @REPO_KEYSTR_002
list, err := kstr.List() list, err := kstr.List()
assert.NoError(t, err, "should be able to list key") assert.NoError(t, err, "should be able to list key")
assert.Empty(t, list, "there should be no keys") assert.Empty(t, list, "there should be no keys")
//stm: @REPO_KEYSTR_003
err = kstr.Put("k1", k1) err = kstr.Put("k1", k1)
assert.NoError(t, err, "should be able to put k1") assert.NoError(t, err, "should be able to put k1")
//stm: @REPO_KEYSTR_004
err = kstr.Put("k1", k1) err = kstr.Put("k1", k1)
if assert.Error(t, err, "putting key under the same name should error") { if assert.Error(t, err, "putting key under the same name should error") {
assert.True(t, xerrors.Is(err, types.ErrKeyExists), "returned error is ErrKeyExists") assert.True(t, xerrors.Is(err, types.ErrKeyExists), "returned error is ErrKeyExists")
} }
//stm: @REPO_KEYSTR_005
k1prim, err := kstr.Get("k1") k1prim, err := kstr.Get("k1")
assert.NoError(t, err, "should be able to get k1") assert.NoError(t, err, "should be able to get k1")
assert.Equal(t, k1, k1prim, "returned key should be the same") assert.Equal(t, k1, k1prim, "returned key should be the same")
@ -116,6 +128,7 @@ func basicTest(t *testing.T, repo Repo) {
assert.NoError(t, err, "should be able to list keys") assert.NoError(t, err, "should be able to list keys")
assert.ElementsMatch(t, []string{"k1", "k2"}, list, "returned elements match") assert.ElementsMatch(t, []string{"k1", "k2"}, list, "returned elements match")
//stm: @REPO_KEYSTR_006
err = kstr.Delete("k2") err = kstr.Delete("k2")
assert.NoError(t, err, "should be able to delete key") assert.NoError(t, err, "should be able to delete key")

View File

@ -15,6 +15,7 @@ func TestMonitorShutdown(t *testing.T) {
// Three shutdown handlers. // Three shutdown handlers.
var wg sync.WaitGroup var wg sync.WaitGroup
wg.Add(3) wg.Add(3)
//stm: @NODE_SHUTDOWN_001
h := ShutdownHandler{ h := ShutdownHandler{
Component: "handler", Component: "handler",
StopFunc: func(_ context.Context) error { StopFunc: func(_ context.Context) error {
@ -23,6 +24,7 @@ func TestMonitorShutdown(t *testing.T) {
}, },
} }
//stm: @NODE_SHUTDOWN_002
finishCh := MonitorShutdown(signalCh, h, h, h) finishCh := MonitorShutdown(signalCh, h, h, h)
// Nothing here after 10ms. // Nothing here after 10ms.

View File

@ -1,3 +1,4 @@
//stm: #unit
package paychmgr package paychmgr
import ( import (
@ -196,6 +197,7 @@ func TestCheckVoucherValid(t *testing.T) {
for _, tcase := range tcases { for _, tcase := range tcases {
tcase := tcase tcase := tcase
//stm: @PAYMENT_CHANNEL_VOUCHER_001, PAYMENT_CHANNEL_VOUCHER_002, PAYMENT_CHANNEL_VOUCHER_003, PAYMENT_CHANNEL_VOUCHER_004
t.Run(tcase.name, func(t *testing.T) { t.Run(tcase.name, func(t *testing.T) {
// Create an actor for the channel with the test case balance // Create an actor for the channel with the test case balance
act := &types.Actor{ act := &types.Actor{