Skip to content

Commit fffbaad

Browse files
committed
Add main.go for testing
Signed-off-by: Dorin Geman <dorin.geman@docker.com>
1 parent 1ae8192 commit fffbaad

2 files changed

Lines changed: 77 additions & 0 deletions

File tree

main.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package main
2+
3+
import (
4+
"net"
5+
"net/http"
6+
"os"
7+
"os/signal"
8+
"path/filepath"
9+
"syscall"
10+
11+
"github.com/docker/model-distribution/pkg/distribution"
12+
"github.com/docker/model-runner/pkg/inference/models"
13+
"github.com/sirupsen/logrus"
14+
)
15+
16+
var log = logrus.New()
17+
18+
func main() {
19+
userHomeDir, err := os.UserHomeDir()
20+
if err != nil {
21+
log.Fatalf("Failed to get user home directory: %v", err)
22+
}
23+
distributionClient, err := distribution.NewClient(
24+
distribution.WithStoreRootPath(filepath.Join(userHomeDir, ".docker", "models")),
25+
)
26+
if err != nil {
27+
log.Fatalf("Failed to create distribution client: %v", err)
28+
}
29+
30+
modelManager := models.NewManager(log, distributionClient)
31+
32+
router := http.NewServeMux()
33+
for _, route := range modelManager.GetRoutes() {
34+
router.Handle(route, modelManager)
35+
}
36+
37+
sockName := "model-runner.sock"
38+
if err := os.Remove(sockName); err != nil {
39+
if !os.IsNotExist(err) {
40+
log.Fatalf("Failed to remove existing socket: %v", err)
41+
}
42+
}
43+
defer os.Remove(sockName)
44+
ln, err := net.ListenUnix("unix", &net.UnixAddr{Name: sockName, Net: "unix"})
45+
if err != nil {
46+
log.Fatalf("Failed to listen on socket: %v", err)
47+
}
48+
49+
stop := make(chan os.Signal, 1)
50+
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
51+
52+
server := &http.Server{Handler: router}
53+
serverErrors := make(chan error, 1)
54+
go func() {
55+
serverErrors <- server.Serve(ln)
56+
}()
57+
defer server.Close()
58+
59+
select {
60+
case err := <-serverErrors:
61+
if err != nil {
62+
log.Errorf("Server error: %v", err)
63+
}
64+
case <-stop:
65+
log.Infoln("Shutdown signal received")
66+
}
67+
log.Infoln("Server stopped")
68+
}

pkg/inference/models/manager.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,15 @@ func (m *Manager) routeHandlers() map[string]http.HandlerFunc {
7878
}
7979
}
8080

81+
func (m *Manager) GetRoutes() []string {
82+
routeHandlers := m.routeHandlers()
83+
routes := make([]string, 0, len(routeHandlers))
84+
for route := range routeHandlers {
85+
routes = append(routes, route)
86+
}
87+
return routes
88+
}
89+
8190
func (m *Manager) modelNameWrapper(pathPrefix string, next func(w http.ResponseWriter, model string)) http.HandlerFunc {
8291
return func(w http.ResponseWriter, r *http.Request) {
8392
// Special case for <backend>/v1/models/.

0 commit comments

Comments
 (0)