From 5f0403d208792ebc9ab86b6802481013804169ea Mon Sep 17 00:00:00 2001 From: Roy Han Date: Fri, 31 May 2024 17:40:11 -0700 Subject: [PATCH] Isolated Deletions --- server/routes_test.go | 179 +++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 91 deletions(-) diff --git a/server/routes_test.go b/server/routes_test.go index 07481d183..5cf9f96a8 100644 --- a/server/routes_test.go +++ b/server/routes_test.go @@ -127,6 +127,94 @@ func Test_Routes(t *testing.T) { assert.Equal(t, modelList.Models[0].Name, "test-model:latest") }, }, + { + Name: "Show Model Handler", + Method: http.MethodPost, + Path: "/api/show", + Setup: func(t *testing.T, req *http.Request) { + createTestModel(t, "show-model") + showReq := api.ShowRequest{Model: "show-model"} + jsonData, err := json.Marshal(showReq) + assert.Nil(t, err) + req.Body = io.NopCloser(bytes.NewReader(jsonData)) + }, + Expected: func(t *testing.T, resp *http.Response) { + contentType := resp.Header.Get("Content-Type") + assert.Equal(t, contentType, "application/json; charset=utf-8") + body, err := io.ReadAll(resp.Body) + assert.Nil(t, err) + + var showResp api.ShowResponse + err = json.Unmarshal(body, &showResp) + assert.Nil(t, err) + + var params []string + paramsSplit := strings.Split(showResp.Parameters, "\n") + for _, p := range paramsSplit { + params = append(params, strings.Join(strings.Fields(p), " ")) + } + sort.Strings(params) + expectedParams := []string{ + "seed 42", + "stop \"bar\"", + "stop \"foo\"", + "top_p 0.9", + } + assert.Equal(t, expectedParams, params) + }, + }, + { + Name: "Delete Handler (multiple blob reference)", + Method: http.MethodDelete, + Path: "/api/delete", + Setup: func(t *testing.T, req *http.Request) { + deleteReq := api.DeleteRequest{Model: "test-model"} + jsonData, err := json.Marshal(deleteReq) + assert.Nil(t, err) + req.Body = io.NopCloser(bytes.NewReader(jsonData)) + }, + Expected: func(t *testing.T, resp *http.Response) { + _, err := io.ReadAll(resp.Body) + assert.Nil(t, err) + assert.Equal(t, resp.StatusCode, 200) + + _, err = GetModel("test-model") + assert.True(t, os.IsNotExist(err)) + + model, _ := GetModel("show-model") + assert.Equal(t, "show-model:latest", model.ShortName) + + for i, blob := range blobs { + blobPath, _ := GetBlobsPath(blob) + _, err := os.Stat(blobPath) + assert.False(t, os.IsNotExist(err)) + blobs[i] = blobPath + } + }, + }, + { + Name: "Delete Handler (single blob reference)", + Method: http.MethodDelete, + Path: "/api/delete", + Setup: func(t *testing.T, req *http.Request) { + deleteReq := api.DeleteRequest{Model: "show-model"} + jsonData, err := json.Marshal(deleteReq) + assert.Nil(t, err) + req.Body = io.NopCloser(bytes.NewReader(jsonData)) + }, + Expected: func(t *testing.T, resp *http.Response) { + _, err := io.ReadAll(resp.Body) + assert.Nil(t, err) + + _, err = GetModel("show-model") + assert.True(t, os.IsNotExist(err)) + + for _, blob := range blobs { + _, err := os.Stat(blob) + assert.True(t, os.IsNotExist(err)) + } + }, + }, { Name: "Create Model Handler", Method: http.MethodPost, @@ -178,97 +266,6 @@ func Test_Routes(t *testing.T) { assert.Equal(t, "beefsteak:latest", model.ShortName) }, }, - { - Name: "Show Model Handler", - Method: http.MethodPost, - Path: "/api/show", - Setup: func(t *testing.T, req *http.Request) { - createTestModel(t, "show-model") - showReq := api.ShowRequest{Model: "show-model"} - jsonData, err := json.Marshal(showReq) - assert.Nil(t, err) - req.Body = io.NopCloser(bytes.NewReader(jsonData)) - }, - Expected: func(t *testing.T, resp *http.Response) { - contentType := resp.Header.Get("Content-Type") - assert.Equal(t, contentType, "application/json; charset=utf-8") - body, err := io.ReadAll(resp.Body) - assert.Nil(t, err) - - var showResp api.ShowResponse - err = json.Unmarshal(body, &showResp) - assert.Nil(t, err) - - var params []string - paramsSplit := strings.Split(showResp.Parameters, "\n") - for _, p := range paramsSplit { - params = append(params, strings.Join(strings.Fields(p), " ")) - } - sort.Strings(params) - expectedParams := []string{ - "seed 42", - "stop \"bar\"", - "stop \"foo\"", - "top_p 0.9", - } - assert.Equal(t, expectedParams, params) - }, - }, - { - Name: "Delete Handler (multiple blob reference)", - Method: http.MethodDelete, - Path: "/api/delete", - Setup: func(t *testing.T, req *http.Request) { - err := DeleteModel("test-model") - assert.Nil(t, err) - err = DeleteModel("hamshank") - assert.Nil(t, err) - deleteReq := api.DeleteRequest{Model: "beefsteak"} - jsonData, err := json.Marshal(deleteReq) - assert.Nil(t, err) - req.Body = io.NopCloser(bytes.NewReader(jsonData)) - }, - Expected: func(t *testing.T, resp *http.Response) { - _, err := io.ReadAll(resp.Body) - assert.Nil(t, err) - assert.Equal(t, resp.StatusCode, 200) - - _, err = GetModel("beefsteak") - assert.True(t, os.IsNotExist(err)) - - model, _ := GetModel("show-model") - assert.Equal(t, "show-model:latest", model.ShortName) - - for _, blob := range blobs { - blob, _ = GetBlobsPath(blob) - _, err := os.Stat(blob) - assert.False(t, os.IsNotExist(err)) - } - }, - }, - { - Name: "Delete Handler (single blob reference)", - Method: http.MethodDelete, - Path: "/api/delete", - Setup: func(t *testing.T, req *http.Request) { - deleteReq := api.DeleteRequest{Model: "show-model"} - jsonData, err := json.Marshal(deleteReq) - assert.Nil(t, err) - req.Body = io.NopCloser(bytes.NewReader(jsonData)) - }, - Expected: func(t *testing.T, resp *http.Response) { - _, err := io.ReadAll(resp.Body) - assert.Nil(t, err) - - _, err = GetModel("show-model") - assert.True(t, os.IsNotExist(err)) - - for _, blob := range blobs { - _, err := os.Stat(blob) - assert.True(t, os.IsNotExist(err)) - } - }, - }, } t.Setenv("OLLAMA_MODELS", t.TempDir())