[amber] Delete amber
We no longer need this package
Change-Id: Ibbe4445aae16262d3c02c2de1e950a091f816407
diff --git a/botanist/amber/server.go b/botanist/amber/server.go
deleted file mode 100644
index 7136401..0000000
--- a/botanist/amber/server.go
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2019 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package amber
-
-import (
- "context"
- "fmt"
- "net/http"
- "path"
-)
-
-// DefaultServerAddress is the default address to serve packages from.
-const DefaultServerAddress = "localhost:8083"
-
-// DefaultPackagesPath returns the default path to an amber package repository within a
-// Fuchsia build directory.
-func DefaultPackagesPath(buildDir string) string {
- return path.Join(buildDir, "amber-files", "repository")
-}
-
-// Middleware creates a new http.Handler that executes itself before executing next. The
-// new handler should always call next to give the server a chance to serve files.
-type Middleware func(next http.Handler) http.Handler
-
-// ServerOptions specify how to serve a package repository.
-type ServerOptions struct {
- // Address is the HTTP address to serve from
- Address string
-
- // PackagesPath is the path to the package repository to serve.
- PackagesPath string
-
- // Middleware is optional HTTP middleware to use for the Server. This will be called
- // on every incoming request before the server handles the message.
- Middleware Middleware
-}
-
-// ServePackages starts an OTA server for the amber repository located at path. Address
-// is the HTTP address to serve from. This function will block until the server is done.
-// The server will exit when the provide context is done. Returns the string URL of the
-// package server.
-func ServePackages(ctx context.Context, opts ServerOptions) (url string) {
- handler := http.FileServer(http.Dir(opts.PackagesPath))
- if opts.Middleware != nil {
- handler = opts.Middleware(handler)
- }
-
- s := &server{
- address: opts.Address,
- handler: handler,
- }
-
- s.delegate = &http.Server{
- Addr: opts.Address,
- Handler: s.handler,
- }
-
- go s.start(ctx)
- return s.url()
-}
-
-// server is a handle to a package repository server.
-type server struct {
- address string
- delegate *http.Server
- handler http.Handler
-}
-
-func (s *server) url() string {
- return fmt.Sprintf("http://%s", s.address)
-}
-
-func (s *server) start(ctx context.Context) error {
- errors := make(chan error)
-
- go func() {
- errors <- s.delegate.ListenAndServe()
- }()
-
- select {
- case <-ctx.Done():
- if err := s.delegate.Close(); err != nil {
- return err
- }
- return ctx.Err()
- case err := <-errors:
- return err
- }
-}
diff --git a/botanist/amber/server_test.go b/botanist/amber/server_test.go
deleted file mode 100644
index 60943e7..0000000
--- a/botanist/amber/server_test.go
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2019 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package amber_test
-
-import (
- "bytes"
- "context"
- "fmt"
- "io/ioutil"
- "net/http"
- "os"
- "path"
- "path/filepath"
- "strings"
- "testing"
-
- "fuchsia.googlesource.com/tools/botanist/amber"
- "fuchsia.googlesource.com/tools/color"
- "fuchsia.googlesource.com/tools/logger"
-)
-
-func TestServePackages(t *testing.T) {
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
-
- // Create a fake build output directory.
- root, err := ioutil.TempDir("", "")
- if err != nil {
- t.Fatalf("failed to create temp directory: %v", err)
- }
- defer os.RemoveAll(root)
-
- // Create a fake pakage repository with a single file to serve in that directory.
- packageRoot := path.Join(root, "amber-files", "repository")
- if err := os.MkdirAll(packageRoot, os.FileMode(0755)); err != nil {
- t.Fatalf("failed to create directory %s: %v", packageRoot, err)
- }
-
- file, err := ioutil.TempFile(packageRoot, "")
- if err != nil {
- t.Fatalf("failed to create tempfile in %s: %v", packageRoot, err)
- }
-
- const message = "test file"
- if _, err := file.Write([]byte(message)); err != nil {
- t.Fatalf("failed to write dummy data to %s: %v", file.Name(), err)
- }
-
- // Serve the repository.
- serverURL := amber.ServePackages(ctx, amber.ServerOptions{
- Address: amber.DefaultServerAddress,
- PackagesPath: amber.DefaultPackagesPath(root),
- })
-
- // Ensure we can fetch the file.
- uri := fmt.Sprintf("%s/%s", serverURL, filepath.Base(file.Name()))
- res, err := http.Get(uri)
- if err != nil {
- t.Fatalf("failed to GET %q: %v", uri, err)
- }
- defer res.Body.Close()
-
- // Ensure the contents are as expected.
- data, err := ioutil.ReadAll(res.Body)
- if err != nil {
- t.Fatalf("failed to read response body: %v", err)
- }
- if string(data) != message {
- t.Fatalf("got %q but wanted %q", string(data), message)
- }
-}
-
-func TestServerWithMiddleware(t *testing.T) {
- out := new(bytes.Buffer)
-
- loggingMiddleware := func(next http.Handler) http.Handler {
- level := logger.InfoLevel
- l := logger.NewLogger(level, color.NewColor(color.ColorAuto), out, out)
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- l.Logf(level, "[%s] %q", r.Method, r.URL.Path)
- next.ServeHTTP(w, r)
- })
- }
-
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
-
- serverURL := amber.ServePackages(ctx, amber.ServerOptions{
- Address: amber.DefaultServerAddress,
- PackagesPath: amber.DefaultPackagesPath("."),
- Middleware: loggingMiddleware,
- })
-
- uri := fmt.Sprintf("%s/%s", serverURL, filepath.Base("unimportant"))
- res, err := http.Get(uri)
- if err != nil {
- t.Fatalf("failed to GET %q: %v", uri, err)
- }
- defer res.Body.Close()
-
- if out.String() == "" {
- t.Fatalf("middleware was not called")
- }
-
- expected := `[GET] "/unimportant"`
- actual := strings.TrimSpace(out.String())
- if actual != expected {
- t.Fatalf("got %q but wanted %q", actual, expected)
- }
-}