Skip to content

Commit 8fcc95f

Browse files
authored
Create inference model/pool objects in memory instead of reading them from files (#505)
1 parent c4c6f2a commit 8fcc95f

File tree

3 files changed

+51
-117
lines changed

3 files changed

+51
-117
lines changed

pkg/epp/util/testing/wrappers.go

+10
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ func (m *InferenceModelWrapper) ModelName(modelName string) *InferenceModelWrapp
129129
return m
130130
}
131131

132+
func (m *InferenceModelWrapper) TargetModel(modelName string) *InferenceModelWrapper {
133+
m.Spec.TargetModels = append(m.Spec.TargetModels, v1alpha2.TargetModel{Name: modelName})
134+
return m
135+
}
136+
132137
func (m *InferenceModelWrapper) PoolName(poolName string) *InferenceModelWrapper {
133138
m.Spec.PoolRef = v1alpha2.PoolObjectReference{Name: v1alpha2.ObjectName(poolName)}
134139
return m
@@ -187,6 +192,11 @@ func (m *InferencePoolWrapper) TargetPortNumber(p int32) *InferencePoolWrapper {
187192
return m
188193
}
189194

195+
func (m *InferencePoolWrapper) ExtensionRef(name string) *InferencePoolWrapper {
196+
m.Spec.ExtensionRef = &v1alpha2.Extension{ExtensionReference: v1alpha2.ExtensionReference{Name: v1alpha2.ObjectName(name)}}
197+
return m
198+
}
199+
190200
// Obj returns the wrapped InferencePool.
191201
func (m *InferencePoolWrapper) ObjRef() *v1alpha2.InferencePool {
192202
return &m.InferencePool

test/integration/epp/hermetic_test.go

+41-54
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ limitations under the License.
1818
package epp
1919

2020
import (
21-
"bufio"
22-
"bytes"
2321
"context"
24-
"errors"
2522
"fmt"
2623
"io"
2724
"net"
@@ -48,7 +45,6 @@ import (
4845
"k8s.io/apimachinery/pkg/runtime"
4946
"k8s.io/apimachinery/pkg/types"
5047
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
51-
k8syaml "k8s.io/apimachinery/pkg/util/yaml"
5248
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
5349
"k8s.io/component-base/metrics/legacyregistry"
5450
metricsutils "k8s.io/component-base/metrics/testutil"
@@ -67,7 +63,6 @@ import (
6763
runserver "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/server"
6864
logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
6965
utiltesting "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/testing"
70-
"sigs.k8s.io/yaml"
7166
)
7267

7368
const (
@@ -1545,35 +1540,50 @@ func BeforeSuite() func() {
15451540

15461541
logger.Info("Setting up hermetic ExtProc server")
15471542

1548-
// Unmarshal CRDs from file into structs
1549-
manifestsPath := filepath.Join("..", "..", "testdata", "inferencepool-with-model-hermetic.yaml")
1550-
docs, err := readDocuments(manifestsPath)
1551-
if err != nil {
1552-
logutil.Fatal(logger, err, "Can't read object manifests", "path", manifestsPath)
1543+
ns := "default"
1544+
pool := utiltesting.MakeInferencePool("vllm-llama2-7b-pool").
1545+
Namespace(ns).
1546+
TargetPortNumber(8000).
1547+
Selector(map[string]string{"app": "vllm-llama2-7b-pool"}).
1548+
ExtensionRef("epp").
1549+
ObjRef()
1550+
if err := k8sClient.Create(context.Background(), pool); err != nil {
1551+
logutil.Fatal(logger, err, "Unable to create inferencePool", "pool", pool.Name)
15531552
}
15541553

1555-
for _, doc := range docs {
1556-
inferenceModel := &v1alpha2.InferenceModel{}
1557-
if err = yaml.Unmarshal(doc, inferenceModel); err != nil {
1558-
logutil.Fatal(logger, err, "Can't unmarshal object", "document", doc)
1559-
}
1560-
if inferenceModel.Kind == "InferenceModel" {
1561-
logger.Info("Creating inference model", "model", inferenceModel)
1562-
if err := k8sClient.Create(context.Background(), inferenceModel); err != nil {
1563-
logutil.Fatal(logger, err, "Unable to create inferenceModel", "modelName", inferenceModel.Name)
1564-
}
1565-
}
1554+
models := []*v1alpha2.InferenceModel{
1555+
utiltesting.MakeInferenceModel("sample").
1556+
Namespace(ns).
1557+
ModelName("sql-lora").
1558+
Criticality(v1alpha2.Critical).
1559+
PoolName(pool.Name).
1560+
TargetModel("sql-lora-1fdg2").
1561+
ObjRef(),
1562+
utiltesting.MakeInferenceModel("sheddable").
1563+
Namespace(ns).
1564+
ModelName("sql-lora-sheddable").
1565+
Criticality(v1alpha2.Sheddable).
1566+
PoolName(pool.Name).
1567+
TargetModel("sql-lora-1fdg3").
1568+
ObjRef(),
1569+
utiltesting.MakeInferenceModel("generic").
1570+
Namespace(ns).
1571+
ModelName("my-model").
1572+
Criticality(v1alpha2.Critical).
1573+
PoolName(pool.Name).
1574+
TargetModel("my-model-12345").
1575+
ObjRef(),
1576+
utiltesting.MakeInferenceModel("direct-model").
1577+
Namespace(ns).
1578+
ModelName("direct-model").
1579+
Criticality(v1alpha2.Critical).
1580+
PoolName(pool.Name).
1581+
ObjRef(),
15661582
}
1567-
for _, doc := range docs {
1568-
inferencePool := &v1alpha2.InferencePool{}
1569-
if err = yaml.Unmarshal(doc, inferencePool); err != nil {
1570-
logutil.Fatal(logger, err, "Can't unmarshal object", "document", doc)
1571-
}
1572-
if inferencePool.Kind == "InferencePool" {
1573-
logger.Info("Creating inference pool", "pool", inferencePool)
1574-
if err := k8sClient.Create(context.Background(), inferencePool); err != nil {
1575-
logutil.Fatal(logger, err, "Unable to create inferencePool", "poolName", inferencePool.Name)
1576-
}
1583+
for i := range models {
1584+
logger.Info("Creating inference model", "model", models[i])
1585+
if err := k8sClient.Create(context.Background(), models[i]); err != nil {
1586+
logutil.Fatal(logger, err, "Unable to create inferenceModel", "modelName", models[i].Name)
15771587
}
15781588
}
15791589

@@ -1644,29 +1654,6 @@ func streamedRequest(t *testing.T, client extProcPb.ExternalProcessor_ProcessCli
16441654
return responses, nil
16451655
}
16461656

1647-
// readDocuments reads documents from file.
1648-
func readDocuments(fp string) ([][]byte, error) {
1649-
b, err := os.ReadFile(fp)
1650-
if err != nil {
1651-
return nil, err
1652-
}
1653-
1654-
docs := [][]byte{}
1655-
reader := k8syaml.NewYAMLReader(bufio.NewReader(bytes.NewReader(b)))
1656-
for {
1657-
// Read document
1658-
doc, err := reader.Read()
1659-
if err != nil {
1660-
if errors.Is(err, io.EOF) {
1661-
break
1662-
}
1663-
return nil, err
1664-
}
1665-
docs = append(docs, doc)
1666-
}
1667-
return docs, nil
1668-
}
1669-
16701657
func makeMetadata(endpoint string) *structpb.Struct {
16711658
return &structpb.Struct{
16721659
Fields: map[string]*structpb.Value{

test/testdata/inferencepool-with-model-hermetic.yaml

-63
This file was deleted.

0 commit comments

Comments
 (0)