Bug fix for data sanitization error for property value length, should be 8k
This commit is contained in:
Родитель
0c1baa3ea8
Коммит
553c518f04
|
@ -146,6 +146,30 @@ class DataSanitizerTests extends TestClass {
|
|||
}
|
||||
});
|
||||
|
||||
this.testCase({
|
||||
name: "DataSanitizerTests: Validate sanitizestring defaults to DataSanitizer.MAX_STRING_LENGTH length",
|
||||
test: () => {
|
||||
var expected = "247E5792-7F2";
|
||||
var input = "247E5792-7F2A-49DE-81EB-17D868775A06";
|
||||
|
||||
Microsoft.ApplicationInsights.Telemetry.Common.DataSanitizer["MAX_STRING_LENGTH"] = 12;
|
||||
var actual = Microsoft.ApplicationInsights.Telemetry.Common.DataSanitizer.sanitizeString(input);
|
||||
Assert.equal(expected, actual);
|
||||
}
|
||||
});
|
||||
|
||||
this.testCase({
|
||||
name: "DataSanitizerTests: Validate sanitizestring checks against input max length",
|
||||
test: () => {
|
||||
var expected = "24";
|
||||
var input = "247E5792-7F2A-49DE-81EB-17D868775A06";
|
||||
|
||||
Microsoft.ApplicationInsights.Telemetry.Common.DataSanitizer["MAX_STRING_LENGTH"] = 12;
|
||||
var actual = Microsoft.ApplicationInsights.Telemetry.Common.DataSanitizer.sanitizeString(input, 2);
|
||||
Assert.equal(expected, actual);
|
||||
}
|
||||
});
|
||||
|
||||
this.testCase({
|
||||
name: "DataSanitizerTests: Validate sanitizeProperties trims whitespaces in properties names and values",
|
||||
test: () => {
|
||||
|
@ -160,6 +184,18 @@ class DataSanitizerTests extends TestClass {
|
|||
}
|
||||
});
|
||||
|
||||
this.testCase({
|
||||
name: "DataSanitizerTests: Validate sanitizeId trims to valid size",
|
||||
test: () => {
|
||||
var expected = "247E5";
|
||||
var input = "247E5792-7F2A-49DE-81EB-17D868775A06";
|
||||
|
||||
Microsoft.ApplicationInsights.Telemetry.Common.DataSanitizer["MAX_ID_LENGTH"] = 5;
|
||||
var actual = Microsoft.ApplicationInsights.Telemetry.Common.DataSanitizer.sanitizeId(input);
|
||||
Assert.equal(expected, actual);
|
||||
}
|
||||
});
|
||||
|
||||
this.testCase({
|
||||
name: "DataSanitizerTests: Validate sanitizeString handles null and undefined",
|
||||
test: () => {
|
||||
|
|
|
@ -281,6 +281,7 @@ declare module Microsoft.ApplicationInsights {
|
|||
UrlTooLong = 64,
|
||||
SessionStorageBufferFull = 65,
|
||||
CannotAccessCookie = 66,
|
||||
IdTooLong = 67,
|
||||
}
|
||||
class _InternalLogMessage {
|
||||
message: string;
|
||||
|
@ -1417,9 +1418,17 @@ declare module Microsoft.ApplicationInsights.Telemetry.Common {
|
|||
* Max length allowed for custom names.
|
||||
*/
|
||||
private static MAX_NAME_LENGTH;
|
||||
/**
|
||||
* Max length allowed for Id field in page views.
|
||||
*/
|
||||
private static MAX_ID_LENGTH;
|
||||
/**
|
||||
* Max length allowed for custom values.
|
||||
*/
|
||||
private static MAX_PROPERTY_LENGTH;
|
||||
/**
|
||||
* Max length allowed for names
|
||||
*/
|
||||
private static MAX_STRING_LENGTH;
|
||||
/**
|
||||
* Max length allowed for url.
|
||||
|
@ -1435,12 +1444,13 @@ declare module Microsoft.ApplicationInsights.Telemetry.Common {
|
|||
private static MAX_EXCEPTION_LENGTH;
|
||||
static sanitizeKeyAndAddUniqueness(key: any, map: any): any;
|
||||
static sanitizeKey(name: any): any;
|
||||
static sanitizeString(value: any): any;
|
||||
static sanitizeString(value: any, maxLength?: number): any;
|
||||
static sanitizeUrl(url: any): any;
|
||||
static sanitizeMessage(message: any): any;
|
||||
static sanitizeException(exception: any): any;
|
||||
static sanitizeProperties(properties: any): any;
|
||||
static sanitizeMeasurements(measurements: any): any;
|
||||
static sanitizeId(id: string): string;
|
||||
static padNumber(num: any): string;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,6 +86,7 @@
|
|||
UrlTooLong,
|
||||
SessionStorageBufferFull,
|
||||
CannotAccessCookie,
|
||||
IdTooLong
|
||||
}
|
||||
|
||||
export class _InternalLogMessage {
|
||||
|
|
|
@ -11,9 +11,19 @@ module Microsoft.ApplicationInsights.Telemetry.Common {
|
|||
*/
|
||||
private static MAX_NAME_LENGTH = 150;
|
||||
|
||||
/**
|
||||
* Max length allowed for Id field in page views.
|
||||
*/
|
||||
private static MAX_ID_LENGTH = 128;
|
||||
|
||||
/**
|
||||
* Max length allowed for custom values.
|
||||
*/
|
||||
private static MAX_PROPERTY_LENGTH = 8192;
|
||||
|
||||
/**
|
||||
* Max length allowed for names
|
||||
*/
|
||||
private static MAX_STRING_LENGTH = 1024;
|
||||
|
||||
/**
|
||||
|
@ -67,15 +77,15 @@ module Microsoft.ApplicationInsights.Telemetry.Common {
|
|||
return name;
|
||||
}
|
||||
|
||||
public static sanitizeString(value) {
|
||||
public static sanitizeString(value, maxLength: number = DataSanitizer.MAX_STRING_LENGTH) {
|
||||
if (value) {
|
||||
value = Util.trim(value);
|
||||
if (value.toString().length > DataSanitizer.MAX_STRING_LENGTH) {
|
||||
value = value.toString().substring(0, DataSanitizer.MAX_STRING_LENGTH);
|
||||
if (value.toString().length > maxLength) {
|
||||
value = value.toString().substring(0, maxLength);
|
||||
_InternalLogging.throwInternal(
|
||||
LoggingSeverity.WARNING,
|
||||
_InternalMessageId.StringValueTooLong,
|
||||
"string value is too long. It has been truncated to " + DataSanitizer.MAX_STRING_LENGTH + " characters.",
|
||||
"string value is too long. It has been truncated to " + maxLength + " characters.",
|
||||
{ value: value }, true);
|
||||
}
|
||||
}
|
||||
|
@ -132,7 +142,7 @@ module Microsoft.ApplicationInsights.Telemetry.Common {
|
|||
if (properties) {
|
||||
var tempProps = {};
|
||||
for (var prop in properties) {
|
||||
var value = DataSanitizer.sanitizeString(properties[prop]);
|
||||
var value = DataSanitizer.sanitizeString(properties[prop], DataSanitizer.MAX_PROPERTY_LENGTH);
|
||||
prop = DataSanitizer.sanitizeKeyAndAddUniqueness(prop, tempProps);
|
||||
tempProps[prop] = value;
|
||||
}
|
||||
|
@ -156,6 +166,23 @@ module Microsoft.ApplicationInsights.Telemetry.Common {
|
|||
return measurements;
|
||||
}
|
||||
|
||||
public static sanitizeId(id: string) {
|
||||
if (id) {
|
||||
id = Util.trim(id);
|
||||
if (id.length > DataSanitizer.MAX_ID_LENGTH) {
|
||||
id = id.substring(0, DataSanitizer.MAX_ID_LENGTH);
|
||||
_InternalLogging.throwInternal(
|
||||
LoggingSeverity.WARNING,
|
||||
_InternalMessageId.UrlTooLong,
|
||||
"id is too long, it has been truncated to " + DataSanitizer.MAX_URL_LENGTH + " characters.",
|
||||
{ id: id },
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
public static padNumber(num) {
|
||||
var s = "00" + num;
|
||||
return s.substr(s.length - 3);
|
||||
|
|
|
@ -25,7 +25,7 @@ module Microsoft.ApplicationInsights.Telemetry {
|
|||
constructor(name?: string, url?: string, durationMs?: number, properties?: any, measurements?: any, id?: string) {
|
||||
super();
|
||||
|
||||
this.id = Common.DataSanitizer.sanitizeString(id);
|
||||
this.id = Common.DataSanitizer.sanitizeId(id);
|
||||
this.url = Common.DataSanitizer.sanitizeUrl(url);
|
||||
this.name = Common.DataSanitizer.sanitizeString(name) || Util.NotSpecified;
|
||||
if (!isNaN(durationMs)) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче