Debugging multiple nodes per pod

This commit is contained in:
benbierens 2023-03-22 10:38:10 +01:00
parent f866e5f648
commit 79a513814f
No known key found for this signature in database
GPG Key ID: FE44815D96D0A1AA
5 changed files with 57 additions and 43 deletions

View File

@ -2,10 +2,11 @@
{
public class CodexNodeContainer
{
public CodexNodeContainer(string name, int servicePort, int apiPort, string containerPortName, int discoveryPort, int listenPort, string dataDir)
public CodexNodeContainer(string name, int servicePort, string servicePortName, int apiPort, string containerPortName, int discoveryPort, int listenPort, string dataDir)
{
Name = name;
ServicePort = servicePort;
ServicePortName = servicePortName;
ApiPort = apiPort;
ContainerPortName = containerPortName;
DiscoveryPort = discoveryPort;
@ -15,6 +16,7 @@
public string Name { get; }
public int ServicePort { get; }
public string ServicePortName { get; }
public int ApiPort { get; }
public string ContainerPortName { get; }
public int DiscoveryPort { get; }
@ -34,6 +36,7 @@
return new CodexNodeContainer(
name: $"codex-node{n}",
servicePort: servicePortSource.GetNextNumber(),
servicePortName: $"node{n}",
apiPort: codexPortSource.GetNextNumber(),
containerPortName: $"api-{n}",
discoveryPort: codexPortSource.GetNextNumber(),

View File

@ -1,8 +1,9 @@
using k8s.Models;
using System.Collections;
namespace CodexDistTestCore
{
public interface ICodexNodeGroup
public interface ICodexNodeGroup : IEnumerable<IOnlineCodexNode>
{
IOfflineCodexNodes BringOffline();
IOnlineCodexNode this[int index] { get; }
@ -45,6 +46,16 @@ namespace CodexDistTestCore
return Nodes.Select(n => n.Container).ToArray();
}
public IEnumerator<IOnlineCodexNode> GetEnumerator()
{
return Nodes.Cast<IOnlineCodexNode>().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return Nodes.GetEnumerator();
}
public V1ObjectMeta GetServiceMetadata()
{
return new V1ObjectMeta

View File

@ -151,8 +151,9 @@ namespace CodexDistTestCore
{
result.Add(new V1ServicePort
{
Name = container.ServicePortName,
Protocol = "TCP",
Port = 8080,
Port = container.ApiPort,
TargetPort = container.ContainerPortName,
NodePort = container.ServicePort
});

View File

@ -49,7 +49,14 @@ namespace CodexDistTestCore
{
var test = TestContext.CurrentContext.Test;
var className = test.ClassName!.Substring(test.ClassName.LastIndexOf('.') + 1);
return $"{className}.{test.MethodName}";
var args = FormatArguments(test);
return $"{className}.{test.MethodName}{args}";
}
private static string FormatArguments(TestContext.TestAdapter test)
{
if (test.Arguments == null || !test.Arguments.Any()) return "";
return $"[{string.Join(',', test.Arguments)}]";
}
}

View File

@ -1,28 +1,3 @@
# apiVersion: v1
# kind: Pod
# metadata:
# name: codex-pod
# spec:
# containers:
# - name: codex-node-container
# image: thatbenbierens/nim-codex:sha-c9a62de
# ports:
# - containerPort: 8080
# kind: PersistentVolumeClaim
# apiVersion: v1
# metadata:
# name: codex-volume
# spec:
# accessModes:
# - ReadWriteOnce
# resources:
# requests:
# storage: 1Gi
# storageClassName: rbd
# ---
apiVersion: v1
kind: Namespace
metadata:
@ -48,21 +23,31 @@ spec:
codex-node: dist-test
spec:
containers:
- name: codex-node
image: thatbenbierens/nim-codex:sha-c9a62de
- name: codex-node1
image: thatbenbierens/nim-codex:sha-b204837
ports:
- containerPort: 8080
name: codex-api-port
name: codex-api-port1
env:
- name: LOG_LEVEL
value: WARN
# volumeMounts:
# - mountPath: /datadir
# name: codex-data
# volumes:
# - name: codex-data
# persistentVolumeClaim:
# claimName: codex-volume
- name: API_PORT
value: "8080"
- name: DATA_DIR
value: datadir1
- name: codex-node2
image: thatbenbierens/nim-codex:sha-b204837
ports:
- containerPort: 8081
name: codex-api-port2
env:
- name: API_PORT
value: "8081"
- name: DATA_DIR
value: datadir2
- name: DISC_PORT
value: "8091"
- name: LISTEN_ADDRS
value: "/ip4/0.0.0.0/tcp/8072"
---
apiVersion: v1
@ -75,7 +60,14 @@ spec:
selector:
codex-node: dist-test
ports:
- protocol: TCP
- name: "node1"
protocol: TCP
port: 8080
targetPort: codex-api-port
targetPort: codex-api-port1
nodePort: 30001
- name: "node2"
protocol: TCP
port: 8081
targetPort: codex-api-port2
nodePort: 30002