mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 09:05:55 +00:00
finish stubbing out the Schemar methods in the test
This commit is contained in:
parent
ba044148a7
commit
3692635391
5 changed files with 106 additions and 36 deletions
|
|
@ -71,8 +71,7 @@ func (c *Client) CreateDatabase(ctx context.Context, qdb *dax.QualifiedDatabase)
|
|||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
b, _ := io.ReadAll(resp.Body)
|
||||
return errors.Errorf("status code: %d: %s", resp.StatusCode, b)
|
||||
return errors.Wrapf(errors.UnmarshalJSON(resp.Body), "status code: %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -158,8 +157,7 @@ func (c *Client) DatabaseByName(ctx context.Context, orgID dax.OrganizationID, n
|
|||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
b, _ := io.ReadAll(resp.Body)
|
||||
return nil, errors.Wrapf(errors.UnmarshalJSON(b), "status code: %d", resp.StatusCode)
|
||||
return nil, errors.Wrapf(errors.UnmarshalJSON(resp.Body), "status code: %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
var qdb *dax.QualifiedDatabase
|
||||
|
|
@ -645,8 +643,7 @@ func (c *Client) RegisterNode(ctx context.Context, node *dax.Node) error {
|
|||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
b, _ := io.ReadAll(resp.Body)
|
||||
return errors.Wrapf(errors.UnmarshalJSON(b), "registration request to %s status code: %d: %s", url, resp.StatusCode, b)
|
||||
return errors.Wrapf(errors.UnmarshalJSON(resp.Body), "registration request to %s status code: %d", url, resp.StatusCode)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -676,8 +673,7 @@ func (c *Client) CheckInNode(ctx context.Context, node *dax.Node) error {
|
|||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
b, _ := io.ReadAll(resp.Body)
|
||||
return errors.Wrapf(errors.UnmarshalJSON(b), "status code: %d: %s", resp.StatusCode, b)
|
||||
return errors.Wrapf(errors.UnmarshalJSON(resp.Body), "status code: %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ func (s *server) postCreateDatabase(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := s.controller.CreateDatabase(ctx, req)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
http.Error(w, errors.MarshalJSON(err), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import (
|
|||
"github.com/featurebasedb/featurebase/v3/dax"
|
||||
"github.com/featurebasedb/featurebase/v3/dax/controller"
|
||||
controllerclient "github.com/featurebasedb/featurebase/v3/dax/controller/client"
|
||||
"github.com/featurebasedb/featurebase/v3/dax/controller/schemar"
|
||||
queryerclient "github.com/featurebasedb/featurebase/v3/dax/queryer/client"
|
||||
"github.com/featurebasedb/featurebase/v3/dax/server"
|
||||
"github.com/featurebasedb/featurebase/v3/dax/server/test"
|
||||
|
|
@ -739,12 +740,60 @@ func TestDAXIntegration(t *testing.T) {
|
|||
|
||||
t.Run("Schemar", func(t *testing.T) {
|
||||
t.Run("CreateDatabase", func(t *testing.T) {
|
||||
log.Printf("client: %+v", client)
|
||||
err := client.CreateDatabase(ctx, qdb)
|
||||
err := client.CreateDatabase(ctx, nil)
|
||||
log.Printf("ERR: %v", err)
|
||||
if assert.Error(t, err) {
|
||||
assert.True(t, errors.Is(err, controller.ErrCodeNodeKeyInvalid))
|
||||
assert.True(t, errors.Is(err, schemar.ErrCodeDatabaseNameInvalid))
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("DropDatabase", func(t *testing.T) {
|
||||
//DropDatabase(context.Context, QualifiedDatabaseID) error
|
||||
})
|
||||
|
||||
t.Run("DatabaseByName", func(t *testing.T) {
|
||||
// DatabaseByName(ctx context.Context, orgID OrganizationID, dbname DatabaseName) (*QualifiedDatabase, error)
|
||||
})
|
||||
|
||||
t.Run("DatabaseByID", func(t *testing.T) {
|
||||
// DatabaseByID(ctx context.Context, qdbid QualifiedDatabaseID) (*QualifiedDatabase, error)
|
||||
})
|
||||
|
||||
t.Run("SetDatabaseOption", func(t *testing.T) {
|
||||
// SetDatabaseOption(ctx context.Context, qdbid QualifiedDatabaseID, option string, value string) error
|
||||
})
|
||||
|
||||
t.Run("Databases", func(t *testing.T) {
|
||||
// Databases(context.Context, OrganizationID, ...DatabaseID) ([]*QualifiedDatabase, error)
|
||||
})
|
||||
|
||||
t.Run("CreateTable", func(t *testing.T) {
|
||||
// CreateTable(ctx context.Context, qtbl *QualifiedTable) error
|
||||
})
|
||||
|
||||
t.Run("DropTable", func(t *testing.T) {
|
||||
// DropTable(ctx context.Context, qtid QualifiedTableID) error
|
||||
})
|
||||
|
||||
t.Run("TableByName", func(t *testing.T) {
|
||||
// TableByName(ctx context.Context, qdbid QualifiedDatabaseID, tname TableName) (*QualifiedTable, error)
|
||||
})
|
||||
|
||||
t.Run("TableByID", func(t *testing.T) {
|
||||
// TableByID(ctx context.Context, qtid QualifiedTableID) (*QualifiedTable, error)
|
||||
})
|
||||
|
||||
t.Run("Tables", func(t *testing.T) {
|
||||
// Tables(ctx context.Context, qdbid QualifiedDatabaseID, tids ...TableID) ([]*QualifiedTable, error)
|
||||
})
|
||||
|
||||
t.Run("CreateField", func(t *testing.T) {
|
||||
// CreateField(ctx context.Context, qtid QualifiedTableID, fld *Field) error
|
||||
})
|
||||
|
||||
t.Run("DropField", func(t *testing.T) {
|
||||
// DropField(ctx context.Context, qtid QualifiedTableID, fname FieldName) error
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -9,8 +9,7 @@ import (
|
|||
)
|
||||
|
||||
var _ computer.Registrar = (*wrappedControllerClient)(nil)
|
||||
|
||||
//var _ dax.Schemar = (*wrappedControllerClient)(nil)
|
||||
var _ dax.Schemar = (*wrappedControllerClient)(nil)
|
||||
|
||||
// wrappedControllerClient is a wrapper around the controller client which we
|
||||
// use in tests to ensure that all of the methods for the computer.Registrar
|
||||
|
|
@ -21,13 +20,11 @@ var _ computer.Registrar = (*wrappedControllerClient)(nil)
|
|||
// package, but that seems overly compilicated right now.
|
||||
type wrappedControllerClient struct {
|
||||
cli *controllerclient.Client
|
||||
dax.Schemar
|
||||
}
|
||||
|
||||
func newWrappedControllerClient(cli *controllerclient.Client) *wrappedControllerClient {
|
||||
return &wrappedControllerClient{
|
||||
cli: cli,
|
||||
Schemar: dax.NewNopSchemar(),
|
||||
cli: cli,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -41,25 +38,54 @@ func (w *wrappedControllerClient) CheckInNode(ctx context.Context, node *dax.Nod
|
|||
|
||||
// Schemar
|
||||
|
||||
/*
|
||||
func (w *wrappedControllerClient) CreateDatabase(context.Context, *QualifiedDatabase) error
|
||||
func (w *wrappedControllerClient) DropDatabase(context.Context, QualifiedDatabaseID) error
|
||||
func (w *wrappedControllerClient) CreateDatabase(ctx context.Context, qdb *dax.QualifiedDatabase) error {
|
||||
return w.cli.CreateDatabase(ctx, qdb)
|
||||
}
|
||||
|
||||
DatabaseByName(ctx context.Context, orgID OrganizationID, dbname DatabaseName) (*QualifiedDatabase, error)
|
||||
DatabaseByID(ctx context.Context, qdbid QualifiedDatabaseID) (*QualifiedDatabase, error)
|
||||
func (w *wrappedControllerClient) DropDatabase(ctx context.Context, qdbid dax.QualifiedDatabaseID) error {
|
||||
return w.cli.DropDatabase(ctx, qdbid)
|
||||
}
|
||||
|
||||
SetDatabaseOption(ctx context.Context, qdbid QualifiedDatabaseID, option string, value string) error
|
||||
func (w *wrappedControllerClient) DatabaseByName(ctx context.Context, orgID dax.OrganizationID, dbname dax.DatabaseName) (*dax.QualifiedDatabase, error) {
|
||||
return w.cli.DatabaseByName(ctx, orgID, dbname)
|
||||
}
|
||||
|
||||
Databases(context.Context, OrganizationID, ...DatabaseID) ([]*QualifiedDatabase, error)
|
||||
func (w *wrappedControllerClient) DatabaseByID(ctx context.Context, qdbid dax.QualifiedDatabaseID) (*dax.QualifiedDatabase, error) {
|
||||
return w.cli.DatabaseByID(ctx, qdbid)
|
||||
}
|
||||
|
||||
CreateTable(ctx context.Context, qtbl *QualifiedTable) error
|
||||
DropTable(ctx context.Context, qtid QualifiedTableID) error
|
||||
func (w *wrappedControllerClient) SetDatabaseOption(ctx context.Context, qdbid dax.QualifiedDatabaseID, option string, value string) error {
|
||||
return w.cli.SetDatabaseOption(ctx, qdbid, option, value)
|
||||
}
|
||||
|
||||
TableByName(ctx context.Context, qdbid QualifiedDatabaseID, tname TableName) (*QualifiedTable, error)
|
||||
TableByID(ctx context.Context, qtid QualifiedTableID) (*QualifiedTable, error)
|
||||
func (w *wrappedControllerClient) Databases(ctx context.Context, orgID dax.OrganizationID, dbIDs ...dax.DatabaseID) ([]*dax.QualifiedDatabase, error) {
|
||||
return w.cli.Databases(ctx, orgID, dbIDs...)
|
||||
}
|
||||
|
||||
Tables(ctx context.Context, qdbid QualifiedDatabaseID, tids ...TableID) ([]*QualifiedTable, error)
|
||||
func (w *wrappedControllerClient) CreateTable(ctx context.Context, qtbl *dax.QualifiedTable) error {
|
||||
return w.cli.CreateTable(ctx, qtbl)
|
||||
}
|
||||
|
||||
CreateField(ctx context.Context, qtid QualifiedTableID, fld *Field) error
|
||||
DropField(ctx context.Context, qtid QualifiedTableID, fname FieldName) error
|
||||
*/
|
||||
func (w *wrappedControllerClient) DropTable(ctx context.Context, qtid dax.QualifiedTableID) error {
|
||||
return w.cli.DropTable(ctx, qtid)
|
||||
}
|
||||
|
||||
func (w *wrappedControllerClient) TableByName(ctx context.Context, qdbid dax.QualifiedDatabaseID, tname dax.TableName) (*dax.QualifiedTable, error) {
|
||||
return w.cli.TableByName(ctx, qdbid, tname)
|
||||
}
|
||||
|
||||
func (w *wrappedControllerClient) TableByID(ctx context.Context, qtid dax.QualifiedTableID) (*dax.QualifiedTable, error) {
|
||||
return w.cli.TableByID(ctx, qtid)
|
||||
}
|
||||
|
||||
func (w *wrappedControllerClient) Tables(ctx context.Context, qdbid dax.QualifiedDatabaseID, tids ...dax.TableID) ([]*dax.QualifiedTable, error) {
|
||||
return w.cli.Tables(ctx, qdbid, tids...)
|
||||
}
|
||||
|
||||
func (w *wrappedControllerClient) CreateField(ctx context.Context, qtid dax.QualifiedTableID, fld *dax.Field) error {
|
||||
return w.cli.CreateField(ctx, qtid, fld)
|
||||
}
|
||||
|
||||
func (w *wrappedControllerClient) DropField(ctx context.Context, qtid dax.QualifiedTableID, fname dax.FieldName) error {
|
||||
return w.cli.DropField(ctx, qtid, fname)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ package errors
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
|
@ -126,10 +127,8 @@ func MarshalJSON(err error) string {
|
|||
// UnmarshalJSON converts the byte slice into a codedError. If the bytes can't
|
||||
// unmarshal to a codedError, a normal error will be returned containing the
|
||||
// string value of the byte slice.
|
||||
func UnmarshalJSON(b []byte) error {
|
||||
if len(b) == 0 {
|
||||
return nil
|
||||
}
|
||||
func UnmarshalJSON(r io.Reader) error {
|
||||
b, _ := io.ReadAll(r)
|
||||
|
||||
out := &codedError{}
|
||||
if err := json.Unmarshal(b, out); err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue