daclient_test.go 2.98 KB
Newer Older
1
package altda
2 3 4 5 6 7 8 9 10 11 12

import (
	"context"
	"math/rand"
	"testing"

	"github.com/ethereum-optimism/optimism/op-service/testlog"
	"github.com/ethereum/go-ethereum/log"
	"github.com/stretchr/testify/require"
)

13
func TestDAClientPrecomputed(t *testing.T) {
14
	store := NewMemStore()
15 16 17 18
	logger := testlog.Logger(t, log.LevelDebug)

	ctx := context.Background()

19
	server := NewDAServer("127.0.0.1", 0, store, logger, false)
20 21

	require.NoError(t, server.Start())
22 23 24

	cfg := CLIConfig{
		Enabled:      true,
25
		DAServerURL:  server.HttpEndpoint(),
26 27 28 29 30 31 32 33
		VerifyOnRead: true,
	}
	require.NoError(t, cfg.Check())

	client := cfg.NewDAClient()

	rng := rand.New(rand.NewSource(1234))

34
	input := RandomData(rng, 2000)
35 36 37 38

	comm, err := client.SetInput(ctx, input)
	require.NoError(t, err)

39
	require.Equal(t, comm, NewKeccak256Commitment(input))
40 41 42 43 44 45 46

	stored, err := client.GetInput(ctx, comm)
	require.NoError(t, err)

	require.Equal(t, input, stored)

	// set a bad commitment in the store
47
	require.NoError(t, store.Put(ctx, comm.Encode(), []byte("bad data")))
48 49 50 51 52

	_, err = client.GetInput(ctx, comm)
	require.ErrorIs(t, err, ErrCommitmentMismatch)

	// test not found error
53
	comm = NewKeccak256Commitment(RandomData(rng, 32))
54 55 56 57 58 59 60 61
	_, err = client.GetInput(ctx, comm)
	require.ErrorIs(t, err, ErrNotFound)

	// test storing bad data
	_, err = client.SetInput(ctx, []byte{})
	require.ErrorIs(t, err, ErrInvalidInput)

	// server not responsive
62
	require.NoError(t, server.Stop())
63 64 65
	_, err = client.SetInput(ctx, input)
	require.Error(t, err)

66
	_, err = client.GetInput(ctx, NewKeccak256Commitment(input))
67 68
	require.Error(t, err)
}
69 70 71 72 73 74 75

func TestDAClientService(t *testing.T) {
	store := NewMemStore()
	logger := testlog.Logger(t, log.LevelDebug)

	ctx := context.Background()

76
	server := NewDAServer("127.0.0.1", 0, store, logger, false)
77 78 79 80 81

	require.NoError(t, server.Start())

	cfg := CLIConfig{
		Enabled:      true,
82
		DAServerURL:  server.HttpEndpoint(),
83
		VerifyOnRead: false,
84
		GenericDA:    false,
85 86 87 88 89 90 91 92 93 94 95 96
	}
	require.NoError(t, cfg.Check())

	client := cfg.NewDAClient()

	rng := rand.New(rand.NewSource(1234))

	input := RandomData(rng, 2000)

	comm, err := client.SetInput(ctx, input)
	require.NoError(t, err)

97
	require.Equal(t, comm.String(), NewKeccak256Commitment(input).String())
98 99 100 101 102 103 104 105 106 107 108 109 110 111

	stored, err := client.GetInput(ctx, comm)
	require.NoError(t, err)

	require.Equal(t, input, stored)

	// set a bad commitment in the store
	require.NoError(t, store.Put(ctx, comm.Encode(), []byte("bad data")))

	// assert no error as generic commitments cannot be verified client side
	_, err = client.GetInput(ctx, comm)
	require.NoError(t, err)

	// test not found error
112
	comm = NewKeccak256Commitment(RandomData(rng, 32))
113 114 115 116 117 118 119 120 121 122 123 124
	_, err = client.GetInput(ctx, comm)
	require.ErrorIs(t, err, ErrNotFound)

	// test storing bad data
	_, err = client.SetInput(ctx, []byte{})
	require.ErrorIs(t, err, ErrInvalidInput)

	// server not responsive
	require.NoError(t, server.Stop())
	_, err = client.SetInput(ctx, input)
	require.Error(t, err)

125
	_, err = client.GetInput(ctx, NewKeccak256Commitment(input))
126 127
	require.Error(t, err)
}