mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-01-10 06:28:04 -05:00
138 lines
3.8 KiB
Go
138 lines
3.8 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestConfig(t *testing.T) {
|
|
configTemplate := `{
|
|
"roller_manager_config": {
|
|
"compression_level": 9,
|
|
"rollers_per_session": 1,
|
|
"session_attempts": %d,
|
|
"collection_time": 180,
|
|
"token_time_to_live": 60,
|
|
"verifier": {
|
|
"mock_mode": true,
|
|
"params_path": "",
|
|
"agg_vk_path": ""
|
|
},
|
|
"max_verifier_workers": %d,
|
|
"order_session": "%s"
|
|
},
|
|
"db_config": {
|
|
"driver_name": "postgres",
|
|
"dsn": "postgres://admin:123456@localhost/test?sslmode=disable",
|
|
"maxOpenNum": 200,
|
|
"maxIdleNum": 20
|
|
},
|
|
"l2_config": {
|
|
"endpoint": "/var/lib/jenkins/workspace/SequencerPipeline/MyPrivateNetwork/geth.ipc"
|
|
}
|
|
}`
|
|
|
|
t.Run("Success Case", func(t *testing.T) {
|
|
tmpFile, err := os.CreateTemp("", "example")
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, tmpFile.Close())
|
|
assert.NoError(t, os.Remove(tmpFile.Name()))
|
|
}()
|
|
config := fmt.Sprintf(configTemplate, defaultNumberOfSessionRetryAttempts, defaultNumberOfVerifierWorkers, "ASC")
|
|
_, err = tmpFile.WriteString(config)
|
|
assert.NoError(t, err)
|
|
|
|
cfg, err := NewConfig(tmpFile.Name())
|
|
assert.NoError(t, err)
|
|
|
|
data, err := json.Marshal(cfg)
|
|
assert.NoError(t, err)
|
|
tmpJSON := fmt.Sprintf("/tmp/%d_config.json", time.Now().Nanosecond())
|
|
defer func() {
|
|
if _, err = os.Stat(tmpJSON); err == nil {
|
|
assert.NoError(t, os.Remove(tmpJSON))
|
|
}
|
|
}()
|
|
|
|
assert.NoError(t, os.WriteFile(tmpJSON, data, 0644))
|
|
|
|
cfg2, err := NewConfig(tmpJSON)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, cfg, cfg2)
|
|
})
|
|
|
|
t.Run("File Not Found", func(t *testing.T) {
|
|
_, err := NewConfig("non_existent_file.json")
|
|
assert.ErrorIs(t, err, os.ErrNotExist)
|
|
})
|
|
|
|
t.Run("Invalid JSON Content", func(t *testing.T) {
|
|
tmpFile, err := os.CreateTemp("", "invalid_json_config.json")
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, tmpFile.Close())
|
|
assert.NoError(t, os.Remove(tmpFile.Name()))
|
|
}()
|
|
|
|
_, err = tmpFile.WriteString("{ invalid_json: ")
|
|
assert.NoError(t, err)
|
|
|
|
_, err = NewConfig(tmpFile.Name())
|
|
assert.Error(t, err)
|
|
})
|
|
|
|
t.Run("Invalid Order Session", func(t *testing.T) {
|
|
tmpFile, err := os.CreateTemp("", "example")
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, tmpFile.Close())
|
|
assert.NoError(t, os.Remove(tmpFile.Name()))
|
|
}()
|
|
config := fmt.Sprintf(configTemplate, defaultNumberOfSessionRetryAttempts, defaultNumberOfVerifierWorkers, "INVALID")
|
|
_, err = tmpFile.WriteString(config)
|
|
assert.NoError(t, err)
|
|
|
|
_, err = NewConfig(tmpFile.Name())
|
|
assert.Error(t, err)
|
|
assert.Contains(t, err.Error(), "roller config's order session is invalid")
|
|
})
|
|
|
|
t.Run("Default MaxVerifierWorkers", func(t *testing.T) {
|
|
tmpFile, err := os.CreateTemp("", "example")
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, tmpFile.Close())
|
|
assert.NoError(t, os.Remove(tmpFile.Name()))
|
|
}()
|
|
config := fmt.Sprintf(configTemplate, defaultNumberOfSessionRetryAttempts, 0, "ASC")
|
|
_, err = tmpFile.WriteString(config)
|
|
assert.NoError(t, err)
|
|
|
|
cfg, err := NewConfig(tmpFile.Name())
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, defaultNumberOfVerifierWorkers, cfg.RollerManagerConfig.MaxVerifierWorkers)
|
|
})
|
|
|
|
t.Run("Default SessionAttempts", func(t *testing.T) {
|
|
tmpFile, err := os.CreateTemp("", "example")
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, tmpFile.Close())
|
|
assert.NoError(t, os.Remove(tmpFile.Name()))
|
|
}()
|
|
config := fmt.Sprintf(configTemplate, 0, defaultNumberOfVerifierWorkers, "ASC")
|
|
_, err = tmpFile.WriteString(config)
|
|
assert.NoError(t, err)
|
|
|
|
cfg, err := NewConfig(tmpFile.Name())
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, uint8(defaultNumberOfSessionRetryAttempts), cfg.RollerManagerConfig.SessionAttempts)
|
|
})
|
|
}
|