// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1

package singleprocess

// import (
// 	"context"
// 	"strconv"
// 	"testing"
// 	"time"

// 	"github.com/stretchr/testify/require"

// 	"github.com/hashicorp/vagrant/internal/server"
// 	"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
// 	serverptypes "github.com/hashicorp/vagrant/internal/server/ptypes"
// )

// func TestServiceGetLogStream(t *testing.T) {
// 	ctx := context.Background()

// 	// Create our server
// 	impl, err := New(WithDB(testDB(t)))
// 	require.NoError(t, err)
// 	client := server.TestServer(t, impl)

// 	// Register our instances
// 	resp, err := client.UpsertDeployment(ctx, &vagrant_server.UpsertDeploymentRequest{
// 		Deployment: serverptypes.TestValidDeployment(t, &vagrant_server.Deployment{
// 			Component: &vagrant_server.Component{
// 				Name: "testapp",
// 			},
// 		}),
// 	})

// 	require.NoError(t, err)

// 	dep := resp.Deployment
// 	configClient, err := client.EntrypointConfig(ctx, &vagrant_server.EntrypointConfigRequest{
// 		DeploymentId: dep.Id,
// 		InstanceId:   "1",
// 	})
// 	require.NoError(t, err)
// 	_, err = configClient.Recv()
// 	require.NoError(t, err)

// 	// Simplify writing tests
// 	type Req = vagrant_server.UpsertDeploymentRequest

// 	require := require.New(t)

// 	// Create the stream and send some log messages
// 	logSendClient, err := client.EntrypointLogStream(ctx)
// 	require.NoError(err)
// 	for i := 0; i < 5; i++ {
// 		var entries []*vagrant_server.LogBatch_Entry
// 		for j := 0; j < 5; j++ {
// 			entries = append(entries, &vagrant_server.LogBatch_Entry{
// 				Line: strconv.Itoa(5*i + j),
// 			})
// 		}

// 		logSendClient.Send(&vagrant_server.EntrypointLogBatch{
// 			InstanceId: "1",
// 			Lines:      entries,
// 		})
// 	}
// 	time.Sleep(100 * time.Millisecond)

// 	// Connect to the stream and download the logs
// 	logRecvClient, err := client.GetLogStream(ctx, &vagrant_server.GetLogStreamRequest{
// 		Scope: &vagrant_server.GetLogStreamRequest_DeploymentId{
// 			DeploymentId: dep.Id,
// 		},
// 	})
// 	require.NoError(err)

// 	// Get a batch
// 	batch, err := logRecvClient.Recv()
// 	require.NoError(err)
// 	require.NotEmpty(batch.Lines)
// 	require.Len(batch.Lines, 25)
// }

// func TestServiceGetLogStream_byApp(t *testing.T) {
// 	ctx := context.Background()

// 	// Create our server
// 	impl, err := New(WithDB(testDB(t)))
// 	require.NoError(t, err)
// 	client := server.TestServer(t, impl)

// 	// Setup our references
// 	refApp := &vagrant_server.Ref_Application{
// 		Project:     "test",
// 		Application: "app",
// 	}
// 	refWs := &vagrant_server.Ref_Workspace{
// 		Workspace: "ws",
// 	}

// 	// Register our instances
// 	resp, err := client.UpsertDeployment(ctx, &vagrant_server.UpsertDeploymentRequest{
// 		Deployment: serverptypes.TestValidDeployment(t, &vagrant_server.Deployment{
// 			Application: refApp,
// 			Workspace:   refWs,
// 			Component: &vagrant_server.Component{
// 				Name: "testapp",
// 			},
// 		}),
// 	})

// 	require.NoError(t, err)

// 	dep := resp.Deployment
// 	configClient, err := client.EntrypointConfig(ctx, &vagrant_server.EntrypointConfigRequest{
// 		DeploymentId: dep.Id,
// 		InstanceId:   "1",
// 	})
// 	require.NoError(t, err)
// 	_, err = configClient.Recv()
// 	require.NoError(t, err)

// 	// Simplify writing tests
// 	type Req = vagrant_server.UpsertDeploymentRequest

// 	require := require.New(t)

// 	// Create the stream and send some log messages
// 	logSendClient, err := client.EntrypointLogStream(ctx)
// 	require.NoError(err)
// 	for i := 0; i < 5; i++ {
// 		var entries []*vagrant_server.LogBatch_Entry
// 		for j := 0; j < 5; j++ {
// 			entries = append(entries, &vagrant_server.LogBatch_Entry{
// 				Line: strconv.Itoa(5*i + j),
// 			})
// 		}

// 		logSendClient.Send(&vagrant_server.EntrypointLogBatch{
// 			InstanceId: "1",
// 			Lines:      entries,
// 		})
// 	}
// 	time.Sleep(100 * time.Millisecond)

// 	// Connect to the stream and download the logs
// 	logRecvClient, err := client.GetLogStream(ctx, &vagrant_server.GetLogStreamRequest{
// 		Scope: &vagrant_server.GetLogStreamRequest_Application_{
// 			Application: &vagrant_server.GetLogStreamRequest_Application{
// 				Application: refApp,
// 				Workspace:   refWs,
// 			},
// 		},
// 	})
// 	require.NoError(err)

// 	// Get a batch
// 	batch, err := logRecvClient.Recv()
// 	require.NoError(err)
// 	require.NotEmpty(batch.Lines)
// 	require.Len(batch.Lines, 25)
// }
