Save point

Allow an 'e' in the ref, so that it can be used for t-router tests.
Dynamically add a HttpDispatch, so a test transform is sync
This commit is contained in:
alandavis
2022-08-14 23:43:09 +01:00
parent d704617b9c
commit c61c59eda1
7 changed files with 76 additions and 52 deletions

View File

@@ -33,6 +33,7 @@ public class RepositoryClientData {
public static final String DEBUG_SEPARATOR = "\u23D1";
public static final String REPO_ID = "Repo";
public static final String DEBUG = "debug:";
private static final String NO_DEBUG = "nodebug:";
private static final int REPO_INDEX = 0;
private static final int RENDITION_INDEX = 2;
@@ -60,13 +61,9 @@ public class RepositoryClientData {
return isRepositoryClientData() ? split[REPO_INDEX].substring(REPO_ID.length()) : "";
}
public int getRequestId()
public String getRequestId()
{
try {
return isRepositoryClientData() ? Integer.parseInt(split[REQUEST_ID_INDEX]) : -1;
} catch (NumberFormatException e) {
return -1;
}
return isRepositoryClientData() ? split[REQUEST_ID_INDEX] : "";
}
public String getRenditionName() {
@@ -107,11 +104,13 @@ public class RepositoryClientData {
private static String emptyClientData()
{
StringJoiner sj = new StringJoiner(CLIENT_DATA_SEPARATOR, REPO_ID+"ACS1234"+CLIENT_DATA_SEPARATOR, "");
for (int i=1; i<EXPECTED_ELEMENTS; i++)
StringJoiner sj = new StringJoiner(CLIENT_DATA_SEPARATOR);
sj.add(REPO_ID+"ACS1234");
for (int i=0; i<EXPECTED_ELEMENTS-2; i++)
{
sj.add(Integer.toString(i));
sj.add("");
}
sj.add(NO_DEBUG);
return sj.toString();
}
@@ -121,9 +120,9 @@ public class RepositoryClientData {
return this;
}
public Builder withRequestId(final int requestId)
public Builder withRequestId(final String requestId)
{
clientData.split[REQUEST_ID_INDEX] = Integer.toString(requestId);
clientData.split[REQUEST_ID_INDEX] = requestId;
return this;
}

View File

@@ -231,14 +231,14 @@ public class TransformStack
levels(internalContext).add(levelBuilder.build());
}
public static void setReference(InternalContext internalContext, int requestCountOrClientRequestId)
public static void setReference(InternalContext internalContext, String requestCountOrClientRequestId)
{
setHeaderField(internalContext, REFERENCE_INDEX, requestCountOrClientRequestId);
}
public static void incrementReference(InternalContext internalContext)
{
setHeaderField(internalContext, REFERENCE_INDEX, getReferenceCounter(internalContext)+1);
setHeaderField(internalContext, REFERENCE_INDEX, Integer.toString(getReferenceCounter(internalContext)+1));
}
public static void resetAttemptedRetries(InternalContext internalContext)
@@ -257,6 +257,11 @@ public class TransformStack
}
private static void setHeaderField(InternalContext internalContext, int index, long value)
{
setHeaderField(internalContext, index, Long.toString(value));
}
private static void setHeaderField(InternalContext internalContext, int index, String value)
{
List<String> levels = levels(internalContext);
int size = levels.size();
@@ -272,14 +277,14 @@ public class TransformStack
List<String> levels = levels(internalContext);
for (int i=TOP_STACK_LEVEL; i<levels.size(); i++)
{
ref.add(getHeaderField(levels.get(i), REFERENCE_INDEX).toString());
ref.add(getHeaderFieldString(levels.get(i), REFERENCE_INDEX));
}
return ref.toString();
}
public static void setReferenceInADummyTopLevelIfUnset(InternalContext internalContext, int reference)
public static void setReferenceInADummyTopLevelIfUnset(InternalContext internalContext, String reference)
{
if (reference != -1 && getReference(internalContext).isBlank() ) // When top transform level not set
if (!reference.isBlank() && getReference(internalContext).isBlank() ) // When top transform level not set
{
init(internalContext);
addTransformLevel(internalContext, levelBuilder(PIPELINE_FLAG));
@@ -309,7 +314,12 @@ public class TransformStack
private static Long getHeaderField(String level, int index)
{
return Long.valueOf(level.split(SEPARATOR_REGEX)[index]);
return Long.valueOf(getHeaderFieldString(level, index));
}
private static String getHeaderFieldString(String level, int index)
{
return level.split(SEPARATOR_REGEX)[index];
}
public static void removeTransformLevel(InternalContext internalContext)
@@ -504,7 +514,7 @@ public class TransformStack
(split.length-FIELDS_IN_HEADER)%FIELDS_PER_STEP != 0 ||
(!PIPELINE_FLAG.equals(split[FLAG_INDEX]) &&
!FAILOVER_FLAG.equals(split[FLAG_INDEX])) ||
!aPositiveInt(split[REFERENCE_INDEX]) ||
!aValidReference(split[REFERENCE_INDEX]) ||
!aPositiveLong(split[START_INDEX]) ||
!aPositiveInt(split[RETRY_INDEX]))
{
@@ -522,6 +532,12 @@ public class TransformStack
return true;
}
private static boolean aValidReference(String string)
{
string = string.startsWith("e") ? string.substring(1) : string;
return aPositiveInt(string);
}
private static boolean aPositiveInt(String string)
{
try

View File

@@ -43,14 +43,14 @@ public class RepositoryClientDataTest
repositoryClientData = RepositoryClientData.builder()
.withRepoId("ACS1234")
.withRenditionName("renditionName")
.withRequestId(54321)
.withRequestId("e123")
.withDebug()
.build();
String clientData = repositoryClientData.toString();
assertEquals("ACS1234", repositoryClientData.getAcsVersion());
assertEquals("renditionName", repositoryClientData.getRenditionName());
assertEquals(54321, repositoryClientData.getRequestId());
assertEquals("e123", repositoryClientData.getRequestId());
assertTrue(repositoryClientData.isDebugRequested());
assertEquals(clientData, repositoryClientData.toString());
}
@@ -74,7 +74,7 @@ public class RepositoryClientDataTest
assertEquals("ACS1234", repositoryClientData.getAcsVersion());
assertEquals("renditionName", repositoryClientData.getRenditionName());
assertEquals(54321, repositoryClientData.getRequestId());
assertEquals("54321", repositoryClientData.getRequestId());
assertFalse(repositoryClientData.isDebugRequested());
assertEquals(clientData, repositoryClientData.toString());
}
@@ -98,7 +98,7 @@ public class RepositoryClientDataTest
assertEquals("", repositoryClientData.getAcsVersion());
assertEquals("", repositoryClientData.getRenditionName());
assertEquals(-1, repositoryClientData.getRequestId());
assertEquals("", repositoryClientData.getRequestId());
assertFalse(repositoryClientData.isDebugRequested());
assertEquals(clientData, repositoryClientData.toString());
}
@@ -121,7 +121,7 @@ public class RepositoryClientDataTest
assertEquals("", repositoryClientData.getAcsVersion());
assertEquals("", repositoryClientData.getRenditionName());
assertEquals(-1, repositoryClientData.getRequestId());
assertEquals("", repositoryClientData.getRequestId());
assertFalse(repositoryClientData.isDebugRequested());
assertEquals(clientData, repositoryClientData.toString());
}
@@ -145,7 +145,7 @@ public class RepositoryClientDataTest
repositoryClientData = new RepositoryClientData(clientData);
assertEquals("", repositoryClientData.getAcsVersion());
assertEquals("", repositoryClientData.getRenditionName());
assertEquals(-1, repositoryClientData.getRequestId());
assertEquals("", repositoryClientData.getRequestId());
assertFalse(repositoryClientData.isDebugRequested());
assertEquals(clientData, repositoryClientData.toString());
}
@@ -192,25 +192,4 @@ public class RepositoryClientDataTest
assertEquals(clientData+DEBUG_SEPARATOR+"Some debug"+DEBUG_SEPARATOR+"Some other debug",
repositoryClientData.toString());
}
@Test
void invalidRequestIdTest()
{
String clientData = new StringJoiner(CLIENT_DATA_SEPARATOR)
.add(REPO_ID + "ACS1234")
.add("1")
.add("renditionName")
.add("3")
.add("4")
.add("5")
.add("abc")
.add("7")
.add("8")
.add(DEBUG)
.toString();
repositoryClientData = new RepositoryClientData(clientData);
assertEquals(-1, repositoryClientData.getRequestId());
assertEquals(clientData, repositoryClientData.toString());
}
}

View File

@@ -170,7 +170,7 @@ class TransformStackTest
TransformStack.addTransformLevel(internalContext, TEST_LEVELS.get("top"));
assertEquals("1", TransformStack.getReference(internalContext));
TransformStack.setReference(internalContext, 123);
TransformStack.setReference(internalContext, "123");
assertEquals("123", TransformStack.getReference(internalContext));
TransformStack.addTransformLevel(internalContext, TEST_LEVELS.get("pipeline 1-N"));
@@ -198,7 +198,7 @@ class TransformStackTest
// Undo setup()
internalContext.getMultiStep().setTransformsToBeDone(new ArrayList<>());
TransformStack.setReferenceInADummyTopLevelIfUnset(internalContext, 23);
TransformStack.setReferenceInADummyTopLevelIfUnset(internalContext, "23");
assertEquals("23", TransformStack.getReference(internalContext));
}
@@ -502,6 +502,35 @@ class TransformStackTest
};
}
@Test
public void testCheckStructureStackLevelsOkWithLeadingE()
{
TransformStack.addTransformLevel(internalContext, TEST_LEVELS.get("top"));
for (String value : Arrays.asList(
"P" + SEPARATOR + "e20" + SEPARATOR + START + SEPARATOR + "1" + STEP))
{
System.out.println("TransformLevel value: " + value);
internalContext.getMultiStep().getTransformsToBeDone().set(TOP_STACK_LEVEL, value);
Assertions.assertNull(TransformStack.checkStructure(internalContext, "T-Reply"));
};
}
@Test
public void testCheckStructureStackLevelsFailWithLeadingX()
{
TransformStack.addTransformLevel(internalContext, TEST_LEVELS.get("top"));
for (String value : Arrays.asList(
"P" + SEPARATOR + "x20" + SEPARATOR + START + SEPARATOR + "1" + STEP))
{
System.out.println("TransformLevel value: " + value);
internalContext.getMultiStep().getTransformsToBeDone().set(TOP_STACK_LEVEL, value);
assertEquals("T-Reply InternalContext did not have levels set correctly",
TransformStack.checkStructure(internalContext, "T-Reply"));
};
}
@Test
public void testCheckStructureStackLevelsBad()
{