I would like to extract the POS_ID - 7 digit number from the response below. When I see the value of the variable using debug sampler I am seeing Error stored
Reponse:
~am_ct_AccountType_wca_DEBIT_OWNERSHIP_CODE##-1~|~am_ct_AccountType_wca_FEE_PCKG_NAME##~|~am_ct_AccountType_wca_POS_ID#*#9004910
I tried with all the below expression
am_ct_AccountType_wca_POS_ID([0-9]{7}) - Error is getting stored in variable
am_ct_AccountType_wca_POS_ID#*#([0-9]{7}) - Error is getting stored in variable
([0-9]{7}) - From the response got the 1st occurrence of 7 digits from the response.
That is not what I want.
Match No.: 1
Default Value: Error
Put this "POS_ID#*#(.+)" as the value of the regular expression field and "$1$" for the template field and "1" for match No.
make sure you use a "\" before the * in the regular exp
Related
My QuickFIX client is complaining that the body length is not expected.
After checking, it is found that it receives a message which actually contains 2 messages (2 different MsgTypes <35>). Also, 2 BeginStrings <8>
Is it a valid message?
The error is reported by QuickFIX, instead of my own code.
Hence, it looks like an invalid message to me although I cannot find any official doc, saying that it is not allowed.
I would expect that QuickFIX could parse the messages as long as the body length of the first message is correct.
You could check if the body length is correct by using the following:
counting the number of characters in the message following the BodyLength (9) field up to, and including, the delimiter immediately preceding the CheckSum (10) field. ALWAYS SECOND FIELD IN MESSAGE. (Always unencrypted) For example, for message 8=FIX 4.4^9=5^35=0^10=10^, the BodyLength is 5 for 35=0^
Source: https://btobits.com/fixopaedia/fixdic44/index.html?tag_9_BodyLength.html
Its completely depends on your fix engine whether to support multiple messages in one go or not.
Using BodyLength[9] and CheckSum[10] fields.
BodyLength is calculated starting from field starting after BodyLenght and
before CheckSum field.
CheckSum is calculated from ‘8= upto SOH before the checksum field.
Binary value of each character is calculated and compared to the LSB of the calculated value to the checksum value.
If the checksum has been calculated to be 274 then the modulo 256 value is 18 (256 + 18 = 274). This value would be transmitted a 10=018 where
"10="is the tag for the checksum field.
98619664xxxx1::01070:0001:SKIP:0 X
is my output that I see in browser, from the xpath=//pre[contains(.,'98619664xxxx1::01070:0001:SKIP:0 X')] and I want to extract only 619664xxxx1 from the output string and verify this with a variable I have set in the test suite of the project.
I have tried the storeText of the output to a variable and then with if condition trying to read the text with my variable.
A part of the log:-
assertElementPresent on xpath=//pre[contains(.,'98619664xxxx1::01070:0001:SKIP:0 X')] OK
20.storeText on xpath=//pre[contains(.,'98619664xxxx1::01070:0001:SKIP:0 X')] with value response OK
if on "${response}" == "${Rufnummer1}" Failed:
missing ) in parenthetical
In kdb I would like to have a function which takes a string as a parameter.
myfunc: {[strParam]
....
}
However when I tried to invoke the function.
q) myfunc["test"]
It complains of length error. It seems that function sees "test" as passing 4 char parameters. How can I make the function expect a string?
A string in kdb is defined as a list of characters and so functions using them have to be able to deal with this.
q)count "test"
4
You can also use a symbol instead casting from a string using `symbol$"test". A symbol is atomic and fixed width so can be useful to use as keys to a dictionary or in a table. Some functions for strings will still work on symbols e.g
q)upper `test
`TEST
while list operation will not work and you will have to turn it back into a string using string `test before using those operations.
When a length error is thrown and you go into the debug mode as shown by the q prompt having two brackets q)), you can use the functions .z.ex to show the failed function and .z.ey to see the failed arguments to narrow down which part is throwing the error.
The error can appear due to multiple reasons.
q)f:{[p] show p} //it works fine with any number of elements
q)f["abc"]
"abc"
f:{[p] enlist[`k]!p} //needs a list of single element
f["abc"]
'length
f[enlist "abc"]
(enlist `k)!enlist "abc"
q)f:{[p] 1 2 3 4!p} //the length of values is different from the length of keys
q)f["abc"]
'length
q)f["abcd"]
(1j, 2j, 3j, 4j)!"abcd"
I have to test one Temp Sensitive IoT device API, Where Need to pass the Maximum and Minimum Temp in the Request Paylod, And the Response need to validate if the correct data is processed successfully. I have used the method .validate .validate("$.minVal", "(${minVal})") minVal = 20 to do a validation. But however the script is ended up with the exception as follow
FAILURE: Caused by: ValidationException: Validation failed: Values not
equal for element '$.maxVal', expected '(20.0)' but was '20
Request--> {"minVal": "20.0", "maxVal": "20.0"}
Response--> {"maxVal":20,"minVal":20,}
Note: if my Request Input is 20.12 its working fine.
Appreciate you guys help.
First of all remove the brackets () around ${minVal} variable. Secondly your minVal variable value is obviously a decimal number 20.0. The received value in Json is a non-decimal number 20. This is why the validation did fail - I think the error message is pretty clear.
I have the column DiscontinuedDate with either a datetime or a blank value. I used the expression
FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate)
To show the date time as just a date but then when the value is blank it shows as an error with the following message "Conversion from string "" to type 'Date' is not valid."
So i've been trying to use an IIF expression like the below:
=IIF(Fields!DiscontinuedDate.Value is "", "", FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate))
I've tried a few variations but they all bring back the same error. Any ideas?
Thanks,
Adam
Your issue is that SSRS IIf expressions do not short circuit, so whenever you have a blank string your code will still be trying the FormatDateTime conversion, so you get this error even with your check.
You can add some logic to stop the empty string being evaluated in the FormatDateTime expression by using another IIf to change it to a NULL value, which won't fail:
=IIF(Fields!DiscontinuedDate.Value = ""
, ""
, FormatDateTime(IIf(Fields!DiscontinuedDate.Value = ""
, Nothing
, Fields!DiscontinuedDate.Value)
, DateFormat.ShortDate))
That solves your immediate issue, but assuming the underlying data is text based, I would also recommend looking at your underlying data and using explicit DateTime type data types instead of strings to prevent these at the lowest possible level.