Merge pull request #106 from yaxia/master

Storage Client Library - 0.7.0
This commit is contained in:
Vincent Jiang (T) 2015-12-18 23:12:35 +08:00
Родитель fade01a188 17dce1a8ca
Коммит f548c06a49
63 изменённых файлов: 30397 добавлений и 12031 удалений

0
.gitattributes поставляемый Normal file
Просмотреть файл

1
.gitignore поставляемый
Просмотреть файл

@ -13,4 +13,5 @@ results
npm-debug.log
node_modules
coverage
docs

Просмотреть файл

@ -1,11 +1,17 @@
language: node_js
node_js:
- "4.1"
- "4.0"
- "0.12"
- "0.10"
- "0.8"
after_script:
- npm run coveralls
install:
- npm install -g npm@1.4.23
- npm --version
- npm install
sudo: false

Просмотреть файл

@ -1,3 +1,12 @@
Tracking Breaking Changes in 0.7.0
ALL
* The generateDevelopmentStorageCredendentials function in the azure-storage.js is renamed to generateDevelopmentStorageCredentials.
BLOB
* The AppendFromLocalFile function in the blobservice.js is renamed to appendFromLocalFile.
* The AppendFromStream function in the blobservice.js is renamed to appendFromStream.
* The AppendFromText function in the blobservice.js is renamed to appendFromText.
Tracking Breaking Changes in 0.5.0
ALL
* The suffix "_HEADER" is removed from all the http header constants.

Просмотреть файл

@ -1,6 +1,29 @@
Note: This is an Azure Storage only package. The all up Azure node sdk still has the old storage bits in there. In a future release, those storage bits will be removed and an npm dependency to this storage node sdk will
be taken. This is a CTP v1 release and the changes described below indicate the changes from the Azure node SDK 0.9.8 available here - https://github.com/Azure/azure-sdk-for-node.
2015.12 Version 0.7.0
ALL
* Fixed the typo in the function generateDevelopmentStorageCredentials.
* Fixed the issue that the HTTP global agent setting is changed during parallel uploading and downloading and impacts on other Node.js applications.
* Fixed the issue that the chunked stream writing methods do not accept string.
* Fixed the issue that the request fails when the content-length is set to string '0' in the 'sendingRequestEvent' event handler.
* Supported retry on XML parsing errors when the XML in the response body is corrupted.
* Replaced the dependency "mime" to "browserify-mime" to work with Browserify.
BLOB
* Added an option to skip the blob or file size checking prior to the actual downloading.
* Fixed the issue that it doesn't callback when loses the internet connection during uploading/uploading.
* Fixed the issue that the local file cannot be removed in the callback when uploading a blob from a local file.
* Fixed the issue that the stream length doesn't work when it is larger than 32MB in the createBlockBlobFromStream, createPageBlobFromStream, createAppendBlobFromStream and appendFromStream functions.
* Fixed the issue that it doesn't return error in the page range validation when the size exceeds the limit.
* Renamed the function AppendFromLocalFile to appendFromLocalFile.
* Renamed the function AppendFromStream to appendFromStream.
* Renamed the function AppendFromText to appendFromText.
TABLE
* Fixed the issue that listTablesSegmentedWithPrefix with maxResult option throws exception.
2015.09 Version 0.6.0
ALL

Просмотреть файл

@ -1,6 +1,7 @@
# Microsoft Azure Storage SDK for Node.js
[![NPM version](https://badge.fury.io/js/azure-storage.svg)](http://badge.fury.io/js/azure-storage) [![Build Status](https://travis-ci.org/Azure/azure-storage-node.svg?branch=master)](https://travis-ci.org/Azure/azure-storage-node)
[![Coverage Status](https://coveralls.io/repos/Azure/azure-storage-node/badge.svg?branch=master&service=github)](https://coveralls.io/github/Azure/azure-storage-node?branch=master)
This project provides a Node.js package that makes it easy to consume and manage Microsoft Azure Storage Services.

Просмотреть файл

@ -23,10 +23,10 @@ var exports = module.exports;
* @return {string} A connection string representing the development storage credentials.
* @example
* var azure = require('azure-storage');
* var devStoreCreds = azure.generateDevelopmentStorageCredendentials();
* var devStoreCreds = azure.generateDevelopmentStorageCredentials();
* var blobService = azure.createBlobService(devStoreCreds);
*/
exports.generateDevelopmentStorageCredendentials = function (proxyUri) {
exports.generateDevelopmentStorageCredentials = function (proxyUri) {
var devStore = 'UseDevelopmentStorage=true;';
if(proxyUri){
devStore += 'DevelopmentStorageProxyUri=' + proxyUri;

Просмотреть файл

@ -65,4 +65,4 @@ exports.ISO8061Date = require('./util/iso8061date');
exports.util = require('./util/util');
exports.validate = require('./util/validate');
exports.StorageUtilities = require('./util/storageutilities');
exports.AccessCondition = require('./util/accesscondition');
exports.AccessCondition = require('./util/accesscondition');

Просмотреть файл

@ -80,7 +80,7 @@ ExponentialRetryPolicyFilter.prototype.shouldRetry = function (statusCode, reque
retryData.retryInterval = Math.min(this.minRetryInterval + incrementDelta, this.maxRetryInterval);
retryData.retryable = retryData.retryCount ? retryData.retryCount < this.retryCount : true;
return RetryPolicyFilter._shouldAbsorbConditionalError(statusCode, requestOptions);
return RetryPolicyFilter._shouldRetryOnError(statusCode, requestOptions);
};
/**

Просмотреть файл

@ -60,7 +60,7 @@ LinearRetryPolicyFilter.prototype.shouldRetry = function (statusCode, requestOpt
retryData.retryInterval = this.retryInterval;
retryData.retryable = retryData.retryCount ? retryData.retryCount < this.retryCount : true;
return RetryPolicyFilter._shouldAbsorbConditionalError(statusCode, requestOptions);
return RetryPolicyFilter._shouldRetryOnError(statusCode, requestOptions);
};
/**

Просмотреть файл

@ -126,11 +126,11 @@ RetryPolicyFilter._handle = function (self, requestOptions, next) {
retryInfo.retryInterval = self.retryInterval;
}
// Only in the case of success from server but client side failure like MD5 or length mismatch, returnObject.retryable has a value(we explicitly set it to false). In this case, we should not retry
// the request.
// Only in the case of success from server but client side failure like MD5 or length mismatch, returnObject.retryable has a value(we explicitly set it to false).
// In this case, we should not retry the request.
if (returnObject.error && azureutil.objectIsNull(returnObject.retryable) &&
((!azureutil.objectIsNull(returnObject.response) &&
retryInfo.retryable) || (returnObject.error.code === 'ETIMEDOUT' || returnObject.error.code === 'ESOCKETTIMEDOUT' || returnObject.error.code === 'ECONNRESET'))) {
((!azureutil.objectIsNull(returnObject.response) && retryInfo.retryable) ||
(returnObject.error.code === 'ETIMEDOUT' || returnObject.error.code === 'ESOCKETTIMEDOUT' || returnObject.error.code === 'ECONNRESET'))) {
if (retryRequestOptions.currentLocation === Constants.StorageLocation.PRIMARY) {
lastPrimaryAttempt = returnObject.operationEndTime;
@ -185,28 +185,35 @@ RetryPolicyFilter._handle = function (self, requestOptions, next) {
operation();
};
RetryPolicyFilter._shouldAbsorbConditionalError = function (statusCode, requestOptions) {
RetryPolicyFilter._shouldRetryOnError = function (statusCode, requestOptions) {
var retryInfo = (requestOptions && requestOptions.retryContext) ? requestOptions.retryContext : {};
if (statusCode >= 300) {
if (requestOptions && !requestOptions.absorbConditionalErrorsOnRetry) {
// Non-timeout Cases
if (statusCode >= 300 && statusCode != 408) {
// Always no retry on "not implemented" and "version not supported"
if (statusCode == 501 || statusCode == 505) {
retryInfo.retryable = false;
return retryInfo;
}
if (statusCode == 501 || statusCode == 505) {
retryInfo.retryable = false;
} else if (statusCode == 412) {
// When appending block with precondition failure and their was a server error before, we ignore the error.
if (retryInfo.lastServerError) {
retryInfo.ignore = true;
// When absorbConditionalErrorsOnRetry is set (for append blob)
if (requestOptions && requestOptions.absorbConditionalErrorsOnRetry) {
if (statusCode == 412) {
// When appending block with precondition failure and their was a server error before, we ignore the error.
if (retryInfo.lastServerError) {
retryInfo.ignore = true;
retryInfo.retryable = true;
} else {
retryInfo.retryable = false;
}
} else if (retryInfo.retryable && statusCode >= 500 && statusCode < 600) {
// Retry on the server error
retryInfo.retryable = true;
} else {
retryInfo.retryable = false;
retryInfo.lastServerError = true;
}
} else if (retryInfo.retryable && statusCode >= 500 && statusCode < 600) {
retryInfo.retryable = true;
retryInfo.lastServerError = true;
} else if (statusCode < 500) {
// No retry on the client error
retryInfo.retryable = false;
}
}

Просмотреть файл

@ -575,8 +575,7 @@ StorageServiceClient.prototype._processResponse = function (webResource, respons
if (validResponse && webResource.rawResponse) {
responseObject = { error: null, response: rsp };
}
else {
} else {
// attempt to parse the response body, errors will be returned in rsp.error without modifying the body
rsp = StorageServiceClient._parseResponse(rsp, self.xml2jsSettings);
@ -707,8 +706,11 @@ StorageServiceClient._parseResponse = function (response, xml2jsSettings) {
var parsed;
var parser = new xml2js.Parser(xml2jsSettings);
parser.parseString(azureutil.removeBOM(body.toString()), function (err, parsedBody) {
if (err) { throw err; }
else { parsed = parsedBody; }
if (err) {
var xmlError = new Error('EXMLFORMAT');
xmlError.innerError = err;
throw xmlError;
} else { parsed = parsedBody; }
});
return parsed;
@ -982,6 +984,8 @@ StorageServiceClient._normalizeError = function (error, response) {
// blob/queue errors should have error.Error, table errors should have error['odata.error']
var errorProperties = error.Error || error.error || error['odata.error'] || error;
normalizedError.code = errorProperties.message; // The message exists when there is error.Error.
for (var property in errorProperties) {
if (errorProperties.hasOwnProperty(property)) {
var key = property.toLowerCase();

Просмотреть файл

@ -401,4 +401,4 @@ StorageServiceSettings._createStorageServiceSettings = function (settings) {
StorageServiceSettings.validKeys = validKeys;
exports = module.exports = StorageServiceSettings;
exports = module.exports = StorageServiceSettings;

Просмотреть файл

@ -53,7 +53,7 @@ function SharedKey(storageAccount, storageAccessKey, usePathStyleUri) {
SharedKey.prototype.signRequest = function (webResource, callback) {
var getvalueToAppend = function (value, headerName) {
// Do not sign content-length 0 in 2014-08-16 and later
if (headerName === HeaderConstants.CONTENT_LENGTH && (azureutil.objectIsNull(value[headerName]) || value[headerName] === 0)) {
if (headerName === HeaderConstants.CONTENT_LENGTH && (azureutil.objectIsNull(value[headerName]) || value[headerName].toString() === '0')) {
return '\n';
} else if (azureutil.objectIsNull(value) || azureutil.objectIsNull(value[headerName])) {
return '\n';

Просмотреть файл

@ -93,8 +93,8 @@ BatchOperation.OperationState = OperationState;
BatchOperation.prototype.setConcurrency = function(concurrency) {
if (concurrency) {
this.concurrency = concurrency;
http.globalAgent.maxSockets = this.concurrency;
https.globalAgent.maxSockets = this.concurrency;
http.Agent.maxSockets = this.concurrency;
https.Agent.maxSockets = this.concurrency;
}
};
@ -108,7 +108,7 @@ BatchOperation.prototype.IsWorkloadHeavy = function() {
//RestOperation start to run in order of id
var sharedRequest = 1;
if(enableReuseSocket && !this.callInOrder) {
sharedRequest = 5;
sharedRequest = 10;
}
return this._activeOperation >= sharedRequest * this.concurrency ||
this._isLowMemory() ||

Просмотреть файл

@ -48,6 +48,7 @@ function ChunkStream(options) {
this._md5hash = null;
this._buffer = null;
this._internalBufferSize = 0;
this._outputLengthLimit = 0;
this._md5sum = undefined;
if (options.calcContentMd5) {
@ -64,6 +65,15 @@ ChunkStream.prototype.setMemoryAllocator = function(allocator) {
this._allocator = allocator;
};
/**
* Set the output length.
*/
ChunkStream.prototype.setOutputLength = function(length) {
if (length) {
this._outputLengthLimit = length;
}
};
/**
* Internal stream ended
*/
@ -87,6 +97,7 @@ ChunkStream.prototype.end = function (chunk, encoding, cb) {
if (cb) {
this.once('end', cb);
}
this.emit('end');
};
@ -124,10 +135,9 @@ ChunkStream.prototype.write = function (chunk, encoding) {
* Buffer the data into a chunk and emit it
*/
ChunkStream.prototype._buildChunk = function (data) {
if(this._md5hash) {
this._md5hash.update(data);
if (typeof data == 'string') {
data = new Buffer(data);
}
var dataSize = data.length;
var dataOffset = 0;
do {
@ -157,12 +167,10 @@ ChunkStream.prototype._buildChunk = function (data) {
dataOffset += copySize;
buffer = this._popInternalBuffer();
}
this._emitBufferData(buffer);
} while(dataSize > 0);
};
/**
* Emit the buffer
*/
@ -175,6 +183,23 @@ ChunkStream.prototype._emitBufferData = function(buffer) {
};
this._offset = newOffset;
if (this._outputLengthLimit > 0) {
// When the start postion is larger than the limit, no data will be consumed though there is an event to be emitted.
// So the buffer should not be calculated.
if (range.start <= this._outputLengthLimit) {
if (this._offset > this._outputLengthLimit) {
// Don't use negative end parameter which means the index starting from the end of the buffer
// to be compatible with node 0.8.
buffer = buffer.slice(0, buffer.length - (this._offset - this._outputLengthLimit));
}
if (this._md5hash) {
this._md5hash.update(buffer);
}
}
} else if (this._md5hash) {
this._md5hash.update(buffer);
}
this.emit('data', buffer, range);
};

Просмотреть файл

@ -17,6 +17,7 @@
var ChunkStream = require('./chunkstream');
var EventEmitter = require('events').EventEmitter;
var util = require('util');
var azureutil = require('./../util/util');
/**
* Chunk stream
@ -59,6 +60,18 @@ ChunkStreamWithStream.prototype.on = function(event, listener) {
return this;
};
/**
* Stop stream from external
*/
ChunkStreamWithStream.prototype.stop = function (chunk, encoding, cb) {
if (azureutil.objectIsFunction(this._stream.destroy)) {
this._stream.destroy();
} else {
this.pause();
}
ChunkStream.prototype.end.call(this, chunk, encoding, cb);
};
/**
* Pause chunk stream
*/

Просмотреть файл

@ -57,7 +57,7 @@ function RangeStream(serviceClient, container, blob, options) {
/**
* Get range list
*/
RangeStream.prototype.list = function (options) {
RangeStream.prototype.list = function (options, callback) {
var start = this._startOffset;
var end;
var singleRangeSize = Constants.BlobConstants.MAX_SINGLE_GET_PAGE_RANGE_SIZE;
@ -76,34 +76,37 @@ RangeStream.prototype.list = function (options) {
var self = this;
var onList = function (error, ranges, response) {
if (error) throw error;
var totalSize = parseInt(response.headers[self._lengthHeader], 10);
var endOffset = Math.min(totalSize - 1, self._endOffset);
var rangeEnd = Math.min(end, endOffset);
if (!ranges.length) {
// convert single object to range
// start >= end means there is no valid regions
ranges.push({ start : start, end : rangeEnd, dataSize: 0 });
} else if (ranges[ranges.length - 1].end !== rangeEnd) {
// don't forget the zero chunk at the end of range
ranges.push({ start : ranges[ranges.length - 1].end + 1, end : rangeEnd, dataSize: 0 });
}
if (end >= endOffset) {
self._rangeStreamEnded = true;
}
self.resizeAndSaveRanges(ranges);
self._startOffset += singleRangeSize;
self._emitRange();
// This is only valid when listing pages because when listing with the default function, the "endOffset" will always equal to or greater than the "end".
if (end < endOffset) {
process.nextTick(function () {
ranges = null;
self.list(options);
self = null;
});
if (error) {
callback(error);
} else {
var totalSize = parseInt(response.headers[self._lengthHeader], 10);
var endOffset = Math.min(totalSize - 1, self._endOffset);
var rangeEnd = Math.min(end, endOffset);
if (!ranges.length) {
// convert single object to range
// start >= end means there is no valid regions
ranges.push({ start : start, end : rangeEnd, dataSize: 0 });
} else if (ranges[ranges.length - 1].end !== rangeEnd) {
// don't forget the zero chunk at the end of range
ranges.push({ start : ranges[ranges.length - 1].end + 1, end : rangeEnd, dataSize: 0 });
}
if (end >= endOffset) {
self._rangeStreamEnded = true;
}
self.resizeAndSaveRanges(ranges);
self._startOffset += singleRangeSize;
self._emitRange();
// This is only valid when listing pages because when listing with the default function, the "endOffset" will always equal to or greater than the "end".
if (end < endOffset) {
process.nextTick(function () {
ranges = null;
self.list(options, callback);
self = null;
});
}
}
};

Просмотреть файл

@ -31,7 +31,7 @@ var Constants = {
/*
* Specifies the value to use for UserAgent header.
*/
USER_AGENT_PRODUCT_VERSION: '0.6.0',
USER_AGENT_PRODUCT_VERSION: '0.7.0',
/**
* The number of default concurrent requests for parallel operation.
@ -39,7 +39,7 @@ var Constants = {
* @const
* @type {string}
*/
DEFAULT_PARALLEL_OPERATION_THREAD_COUNT: 1,
DEFAULT_PARALLEL_OPERATION_THREAD_COUNT: 5,
/**
* Constant representing a kilobyte (Non-SI version).

Просмотреть файл

@ -359,17 +359,28 @@ exports.calculateMD5 = function(readStream, bufferLength, options, callback) {
var internalHash = crypto.createHash('md5');
readStream.on('data', function(data) {
if (index + data.length > bufferLength) {
throw new Error(SR.INVALID_STREAM_LENGTH);
}
else {
var copyLength = bufferLength - index;
if (copyLength > 0) {
data = data.slice(0, copyLength);
data.copy(internalBuff, index);
internalHash.update(data);
index += copyLength;
}
readStream.emit('end');
} else {
data.copy(internalBuff, index);
internalHash.update(data);
index += data.length;
}
}).on('end', function() {
internalBuff = internalBuff.slice(0, index);
options.contentMD5 = internalHash.digest('base64');
callback(internalBuff);
if (!readStream.endEmitted) {
internalBuff = internalBuff.slice(0, index);
options.contentMD5 = internalHash.digest('base64');
// Set the flag to be compatible with Nodejs 0.10 which will keep emitting data from
// the file stream when the read stream has emitted the end event from its listner.
readStream.endEmitted = true;
callback(internalBuff);
}
});
};

Просмотреть файл

@ -129,6 +129,9 @@ exports.isValidUuid = function(uuid, callback) {
if (!validUuidRegex.test(uuid)) {
return fail('The value is not a valid UUID format.');
}
callback();
return true;
};
/**
@ -157,6 +160,7 @@ exports.isValidFunction = function (functionObject, functionName) {
if (!functionObject || !_.isFunction(functionObject)) {
throw new Error(functionName + ' must be specified.');
}
return true;
};
var getNameError = function(name) {
@ -337,7 +341,7 @@ exports.pageRangesAreValid = function (rangeStart, rangeEnd, writeBlockSizeInByt
}
size = (rangeEnd - rangeStart) + 1;
if (size > this.writeBlockSizeInBytes) {
if (size > writeBlockSizeInBytes) {
return fail('Page blob size cant be larger than ' + writeBlockSizeInBytes + ' bytes.');
}
}

Просмотреть файл

@ -19,7 +19,7 @@ var fs = require('fs');
var qs = require('querystring');
var url = require('url');
var util = require('util');
var mime = require('mime');
var mime = require('browserify-mime');
var _ = require('underscore');
var crypto = require('crypto');
var extend = require('extend');
@ -1503,6 +1503,9 @@ BlobService.prototype.setBlobMetadata = function (container, blob, metadata, opt
* @param {string} blob The blob name.
* @param {string} localFileName The local path to the file to be downloaded.
* @param {object} [options] The request options.
* @param {boolean} [options.skipSizeCheck] Skip the size check to perform direct download.
* Set the option to true for small blobs.
* Parallel download and speed summary won't work with this option on.
* @param {SpeedSummary} [options.speedSummary] The upload tracker objects.
* @param {int} [options.parallelOperationThreadCount] Parallel operation thread count
* @param {string} [options.snapshotId] The snapshot identifier.
@ -1614,6 +1617,9 @@ BlobService.prototype.createReadStream = function (container, blob, optionsOrCal
* @param {string} blob The blob name.
* @param {Stream} writeStream The write stream.
* @param {object} [options] The request options.
* @param {boolean} [options.skipSizeCheck] Skip the size check to perform direct download.
* Set the option to true for small blobs.
* Parallel download and speed summary won't work with this option on.
* @param {string} [options.snapshotId] The snapshot identifier.
* @param {string} [options.leaseId] The lease identifier.
* @param {string} [options.rangeStart] Return only the bytes of the blob in the specified range.
@ -1663,28 +1669,31 @@ BlobService.prototype.getBlobToStream = function (container, blob, writeStream,
accessConditions : options.accessConditions
};
var self = this;
this.getBlobProperties(container, blob, propertiesRequestOptions, function (error, properties) {
if (error) {
callback(error);
} else {
var size;
if (options.rangeStart) {
var endOffset = properties.contentLength - 1;
var end = options.rangeEnd ? Math.min(options.rangeEnd, endOffset) : endOffset;
size = end - options.rangeStart + 1;
if (options.skipSizeCheck) {
this._getBlobToStream(container, blob, writeStream, options, callback);
} else {
var self = this;
this.getBlobProperties(container, blob, propertiesRequestOptions, function (error, properties) {
if (error) {
callback(error);
} else {
size = properties.contentLength;
var size;
if (options.rangeStart) {
var endOffset = properties.contentLength - 1;
var end = options.rangeEnd ? Math.min(options.rangeEnd, endOffset) : endOffset;
size = end - options.rangeStart + 1;
} else {
size = properties.contentLength;
}
if (size > self.singleBlobPutThresholdInBytes) {
options.contentMD5 = properties.contentMD5;
self._getBlobToRangeStream(container, blob, properties.blobType, writeStream, options, callback);
} else {
self._getBlobToStream(container, blob, writeStream, options, callback);
}
}
if (size > self.singleBlobPutThresholdInBytes) {
options.contentMD5 = properties.contentMD5;
self._getBlobToRangeStream(container, blob, properties.blobType, writeStream, options, callback);
} else {
self._getBlobToStream(container, blob, writeStream, options, callback);
}
}
});
});
}
return options.speedSummary;
};
@ -3343,7 +3352,7 @@ BlobService.prototype.createOrReplaceAppendBlob = function (container, blob, opt
* To avoid overwriting and instead throw an error if the blob exists, please pass in an accessConditions parameter in the options object.
* This API should be used strictly in a single writer scenario because the API internally uses the append-offset conditional header to avoid duplicate blocks.
* If you are guaranteed to have a single writer scenario, please look at options.absorbConditionalErrorsOnRetry and see if setting this flag to true is acceptable for you.
* If you want to append data to an already existing blob, please look at AppendFromLocalFile.
* If you want to append data to an already existing blob, please look at appendFromLocalFile.
*
* @this {BlobService}
* @param {string} container The container name.
@ -3384,7 +3393,7 @@ BlobService.prototype.createAppendBlobFromLocalFile = function (container, blob,
* To avoid overwriting and instead throw an error if the blob exists, please pass in an accessConditions parameter in the options object.
* This API should be used strictly in a single writer scenario because the API internally uses the append-offset conditional header to avoid duplicate blocks.
* If you are guaranteed to have a single writer scenario, please look at options.absorbConditionalErrorsOnRetry and see if setting this flag to true is acceptable for you.
* If you want to append data to an already existing blob, please look at AppendFromStream.
* If you want to append data to an already existing blob, please look at appendFromStream.
*
* @this {BlobService}
* @param {string} container The container name.
@ -3428,7 +3437,7 @@ BlobService.prototype.createAppendBlobFromStream = function (container, blob, st
* To avoid overwriting and instead throw an error if the blob exists, please pass in an accessConditions parameter in the options object.
* This API should be used strictly in a single writer scenario because the API internally uses the append-offset conditional header to avoid duplicate blocks.
* If you are guaranteed to have a single writer scenario, please look at options.absorbConditionalErrorsOnRetry and see if setting this flag to true is acceptable for you.
* If you want to append data to an already existing blob, please look at AppendFromText.
* If you want to append data to an already existing blob, please look at appendFromText.
*
* @this {BlobService}
* @param {string} container The container name.
@ -3589,11 +3598,11 @@ BlobService.prototype.createWriteStreamToExistingAppendBlob = function (containe
* @param {errorOrResult} callback The callback function.
* @return {SpeedSummary}
*/
BlobService.prototype.AppendFromLocalFile = function (container, blob, localFileName, optionsOrCallback, callback) {
BlobService.prototype.appendFromLocalFile = function (container, blob, localFileName, optionsOrCallback, callback) {
var userOptions;
azureutil.normalizeArgs(optionsOrCallback, callback, function (o, c) { userOptions = o; callback = c; });
validate.validateArgs('AppendFromLocalFile', function (v) {
validate.validateArgs('appendFromLocalFile', function (v) {
v.string(container, 'container');
v.string(blob, 'blob');
v.containerNameIsValid(container);
@ -3609,7 +3618,13 @@ BlobService.prototype.AppendFromLocalFile = function (container, blob, localFile
callback(error);
} else {
var stream = new FileReadStream(localFileName, { calcContentMd5: options.storeBlobContentMD5 });
self._uploadBlobFromStream(false, container, blob, BlobConstants.BlobTypes.APPEND, stream, stat.size, options, callback);
var streamCallback = function (appendError, blob, response) {
if (azureutil.objectIsFunction(stream.destroy)) {
stream.destroy();
}
callback(appendError, blob, response);
};
self._uploadBlobFromStream(false, container, blob, BlobConstants.BlobTypes.APPEND, stream, stat.size, options, streamCallback);
}
});
@ -3652,7 +3667,7 @@ BlobService.prototype.AppendFromLocalFile = function (container, blob, localFile
* @param {errorOrResult} callback The callback function.
* @return {SpeedSummary}
*/
BlobService.prototype.AppendFromStream = function (container, blob, stream, streamLength, optionsOrCallback, callback) {
BlobService.prototype.appendFromStream = function (container, blob, stream, streamLength, optionsOrCallback, callback) {
var options;
azureutil.normalizeArgs(optionsOrCallback, callback, function (o, c) { options = o; callback = c; });
@ -3707,7 +3722,7 @@ BlobService.prototype.AppendFromStream = function (container, blob, stream, stre
* `response` will contain information related to this operation.
* @return {undefined}
*/
BlobService.prototype.AppendFromText = function (container, blob, text, optionsOrCallback, callback) {
BlobService.prototype.appendFromText = function (container, blob, text, optionsOrCallback, callback) {
return this._uploadBlobFromText(false, container, blob, BlobConstants.BlobTypes.APPEND, text, optionsOrCallback, callback);
};
@ -3874,16 +3889,6 @@ BlobService.prototype._createBlobFromLocalFile = function (container, blob, blob
var self = this;
var size = 0;
// Check the file size to determine the upload method: single request or chunks
fs.stat(localFileName, function (error, stat) {
if (error) {
callback(error);
} else {
size = stat.size;
self._createBlob(container, blob, blobType, size, options, creationCallback);
}
});
var creationCallback = function (createError, createBlob, createResponse) {
if (createError) {
@ -3895,10 +3900,26 @@ BlobService.prototype._createBlobFromLocalFile = function (container, blob, blob
}
var stream = new FileReadStream(localFileName, { calcContentMd5: options.storeBlobContentMD5 });
self._uploadBlobFromStream(true, container, blob, blobType, stream, size, options, callback);
var streamCallback = function (createError, createBlob, createResponse) {
if (azureutil.objectIsFunction(stream.destroy)) {
stream.destroy();
}
callback(createError, createBlob, createResponse);
};
self._uploadBlobFromStream(true, container, blob, blobType, stream, size, options, streamCallback);
}
};
// Check the file size to determine the upload method: single request or chunks
fs.stat(localFileName, function (error, stat) {
if (error) {
callback(error);
} else {
size = stat.size;
self._createBlob(container, blob, blobType, size, options, creationCallback);
}
});
return options.speedSummary;
};
@ -4196,7 +4217,7 @@ BlobService.prototype._uploadBlobFromStream = function (isNewBlob, container, bl
};
if (streamLength > 0 && azureutil.objectIsNull(options.contentMD5) && options.storeBlobContentMD5) {
azureutil.calculateMD5(stream, self.singleBlobPutThresholdInBytes, options, function (internalBuff) {
azureutil.calculateMD5(stream, Math.min(self.singleBlobPutThresholdInBytes, streamLength), options, function (internalBuff) {
self._putBlockBlob(container, blob, internalBuff, null, internalBuff.length, options, finalCallback);
});
stream.resume();
@ -4769,6 +4790,7 @@ BlobService.prototype._uploadContentFromChunkStream = function (container, blob,
// initialize chunk allocator
var allocator = new ChunkAllocator(sizeLimitation, options.parallelOperationThreadCount, { logger: this.logger });
chunkStream.setOutputLength(streamLength);
// if this is a FileReadStream, set the allocator on that stream
if (chunkStream._stream && chunkStream._stream.setMemoryAllocator) {
@ -4811,8 +4833,26 @@ BlobService.prototype._uploadContentFromChunkStream = function (container, blob,
var contentMD5 = azureutil.getContentMd5(data);
rangeOptions.contentMD5 = contentMD5;
}
var checkLengthLimit = function () {
if (!streamLength) return true;
if (range.start >= streamLength) {
self.logger.debug(util.format('Stop uploading data from %s bytes to %s bytes to blob %s because of limit %s', range.start, range.end, blob, streamLength));
chunkStream.stop();
return false;
} else if (range.end >= streamLength) {
self.logger.debug(util.format('Clip uploading data from %s bytes to %s bytes to blob %s because of limit %s', range.start, range.end, blob, streamLength));
range.end = streamLength - 1;
data = data.slice(0, streamLength - range.start);
if (options.useTransactionalMD5) {
rangeOptions.contentMD5 = azureutil.getContentMd5(data);
}
}
return true;
};
var uploadBlockBlobChunk = function () {
if (!checkLengthLimit()) return;
var blockId = self.getBlockId(blockIdPrefix, blockCount);
blockIds.push(blockId);
@ -4828,6 +4868,8 @@ BlobService.prototype._uploadContentFromChunkStream = function (container, blob,
};
var uploadPageBlobChunk = function () {
if (!checkLengthLimit()) return;
if (azureutil.isBufferAllZero(data)) {
self.logger.debug(util.format('Skip upload data from %s bytes to %s bytes to blob %s', range.start, range.end, blob));
speedSummary.increment(data.length);
@ -4846,6 +4888,8 @@ BlobService.prototype._uploadContentFromChunkStream = function (container, blob,
};
var uploadAppendBlobChunk = function () {
if (!checkLengthLimit()) return;
rangeOptions.appendPosition = Number(rangeOptions.initialAppendPosition) + Number(range.start);
// We cannot differentiate between max size condition failing only in the retry versus failing in the first attempt and retry.
@ -5320,7 +5364,10 @@ BlobService.prototype._getBlobToRangeStream = function (container, blob, blobTyp
leaseId : options.leaseId
};
rangeStream.list(listOptions);
rangeStream.list(listOptions, function (error) {
callback(error);
});
return speedSummary;
};
@ -5396,6 +5443,9 @@ BlobService.prototype._getBlobToStream = function (container, blob, writeStream,
* @param {string} blob The blob name.
* @param {string} localFileName The local path to the file to be downloaded.
* @param {object} [options] The request options.
* @param {boolean} [options.skipSizeCheck] Skip the size check to perform direct download.
* Set the option to true for small blobs.
* Parallel download and speed summary won't work with this option on.
* @param {string} [options.snapshotId] The snapshot identifier.
* @param {string} [options.leaseId] The lease identifier.
* @param {string} [options.rangeStart] Return only the bytes of the blob in the specified range.

Просмотреть файл

@ -55,7 +55,7 @@ BlockRangeStream.prototype.on = function (event, listener) {
/**
* Get block list
*/
BlockRangeStream.prototype.list = function (options) {
BlockRangeStream.prototype.list = function (options, callback) {
if (!options) {
options = {};
}
@ -66,19 +66,20 @@ BlockRangeStream.prototype.list = function (options) {
var self = this;
this.blobServiceClient.listBlocks(this.container, this.blob, options.bloblistType, options, function (error, blocklist, response) {
if (error) throw error;
var totalSize = parseInt(response.headers[Constants.HeaderConstants.BLOB_CONTENT_LENGTH], 10);
if (!blocklist.CommittedBlocks) {
//Convert single block blob to block blob range
var name = 'NODESDK_BLOCKBLOB_RANGESTREAM';
blocklist.CommittedBlocks = [{ Name : name, Size : totalSize }];
if (error) {
callback(error);
} else {
var totalSize = parseInt(response.headers[Constants.HeaderConstants.BLOB_CONTENT_LENGTH], 10);
if (!blocklist.CommittedBlocks) {
//Convert single block blob to block blob range
var name = 'NODESDK_BLOCKBLOB_RANGESTREAM';
blocklist.CommittedBlocks = [{ Name : name, Size : totalSize }];
}
self._rangelist = blocklist;
self._emitBlockList();
self = blocklist = null;
}
self._rangelist = blocklist;
self._emitBlockList();
self = blocklist = null;
});
};

Просмотреть файл

@ -2173,6 +2173,9 @@ FileService.prototype.getFileToText = function (share, directory, file, optionsO
* @param {string} file The file name. File names may not start or end with the delimiter '/'.
* @param {string} localFileName The local path to the file to be downloaded.
* @param {object} [options] The request options.
* @param {boolean} [options.skipSizeCheck] Skip the size check to perform direct download.
* Set the option to true for small files.
* Parallel download and speed summary won't work with this option on.
* @param {string} [options.rangeStart] Return only the bytes of the file in the specified range.
* @param {string} [options.rangeEnd] Return only the bytes of the file in the specified range.
* @param {boolean} [options.useTransactionalMD5] When set to true, Calculate and send/validate content MD5 for transactions.
@ -2300,6 +2303,9 @@ FileService.prototype.createReadStream = function (share, directory, file, optio
* @param {string} file The file name. File names may not start or end with the delimiter '/'.
* @param {Stream} writeStream The write stream.
* @param {object} [options] The request options.
* @param {boolean} [options.skipSizeCheck] Skip the size check to perform direct download.
* Set the option to true for small files.
* Parallel download and speed summary won't work with this option on.
* @param {string} [options.rangeStart] Return only the bytes of the file in the specified range.
* @param {string} [options.rangeEnd] Return only the bytes of the file in the specified range.
* @param {boolean} [options.useTransactionalMD5] When set to true, Calculate and send/validate content MD5 for transactions.
@ -2346,28 +2352,31 @@ FileService.prototype.getFileToStream = function (share, directory, file, writeS
accessConditions : options.accessConditions
};
var self = this;
this.getFileProperties(share, directory, file, propertiesRequestOptions, function (error, properties) {
if (error) {
callback(error);
} else {
var size;
if (options.rangeStart) {
var endOffset = properties.contentLength - 1;
var end = options.rangeEnd ? Math.min(options.rangeEnd, endOffset) : endOffset;
size = end - options.rangeStart + 1;
if (options.skipSizeCheck) {
this._getFileToStream(share, directory, file, writeStream, options, callback);
} else {
var self = this;
this.getFileProperties(share, directory, file, propertiesRequestOptions, function (error, properties) {
if (error) {
callback(error);
} else {
size = properties.contentLength;
var size;
if (options.rangeStart) {
var endOffset = properties.contentLength - 1;
var end = options.rangeEnd ? Math.min(options.rangeEnd, endOffset) : endOffset;
size = end - options.rangeStart + 1;
} else {
size = properties.contentLength;
}
if (size > self.singleFileThresholdInBytes) {
options.contentMD5 = properties.contentMD5;
self._getFileToRangeStream(share, directory, file, writeStream, options, callback);
} else {
self._getFileToStream(share, directory, file, writeStream, options, callback);
}
}
if (size > self.singleFileThresholdInBytes) {
options.contentMD5 = properties.contentMD5;
self._getFileToRangeStream(share, directory, file, writeStream, options, callback);
} else {
self._getFileToStream(share, directory, file, writeStream, options, callback);
}
}
});
});
}
return options.speedSummary;
};
@ -2578,7 +2587,7 @@ FileService.prototype.createRangesFromStream = function (share, directory, file,
* @param {object} [options] The request options.
* @param {SpeedSummary} [options.speedSummary] The download tracker objects;
* @param {object} [options.metadata] The metadata key/value pairs.
* @param {bool} [options.storeFileContentMD5] Specifies whether the file's ContentMD5 header should be set on uploads.
* @param {bool} [options.storeFileContentMD5] Specifies whether the file's ContentMD5 header should be set on uploads.
* The default value is false for files.
* @param {bool} [options.useTransactionalMD5] Calculate and send/validate content MD5 for transactions.
* @param {string} [options.contentType] The MIME content type of the file. The default type is application/octet-stream.

Просмотреть файл

@ -270,7 +270,7 @@ TableService.prototype.listTablesSegmentedWithPrefix = function (prefix, current
}
if(!azureutil.objectIsNull(options.maxResults)) {
var query = TableQuery.top(options.maxResults);
var query = new TableQuery().top(options.maxResults);
webResource.withQueryOption(QueryStringConstants.TOP, query.toQueryObject().$top);
}

Просмотреть файл

@ -1,7 +1,7 @@
{
"name": "azure-storage",
"author": "Microsoft Corporation",
"version": "0.6.0",
"version": "0.7.0",
"description": "Microsoft Azure Storage Client Library for Node.js",
"tags": [
"azure",
@ -20,9 +20,9 @@
"license": "Apache-2.0",
"dependencies": {
"extend": "~1.2.1",
"mime": "~1.2.4",
"browserify-mime": "~1.2.9",
"node-uuid": "~1.4.0",
"readable-stream": "~1.0.0",
"readable-stream": "~2.0.0",
"request": "~2.57.0",
"underscore": "~1.4.4",
"validator": "~3.22.2",
@ -30,6 +30,8 @@
"xmlbuilder": "0.4.3"
},
"devDependencies": {
"browserify-fs": "^1.0.0",
"coveralls": "^2.11.4",
"grunt": "~0.4.2",
"grunt-contrib-jshint": "~0.11.0",
"grunt-devserver": "^0.6.0",
@ -37,12 +39,17 @@
"grunt-mocha": "^0.4.12",
"grunt-mocha-test": "^0.12.7",
"grunt-nsp-package": "0.0.5",
"istanbul": "^0.3.22",
"jshint": ">= 2.1.4",
"mocha": ">= 1.18.0",
"mocha-lcov-reporter": "^1.0.0",
"nock": "0.16",
"nsp": "^1.0.1",
"should": "1.2.x"
},
"browser": {
"fs": "browserify-fs"
},
"homepage": "http://github.com/Azure/azure-storage-node",
"repository": {
"type": "git",
@ -53,6 +60,8 @@
},
"scripts": {
"check": "jshint lib",
"test": "jshint lib & mocha --no-timeouts --recursive test"
"test": "jshint lib && mocha --no-timeouts --recursive test",
"cover": "istanbul cover ./node_modules/mocha/bin/_mocha -- -R spec -u bdd --no-timeouts --recursive test",
"coveralls": "npm run cover && cat ./coverage/lcov.info | node ./node_modules/coveralls/bin/coveralls.js"
}
}

Просмотреть файл

@ -28,7 +28,7 @@ var StorageServiceClientConstants = Constants.StorageServiceClientConstants;
describe('StorageServiceClientTests', function () {
it('devStore', function (done) {
var devStoreCreds = azure.generateDevelopmentStorageCredendentials();
var devStoreCreds = azure.generateDevelopmentStorageCredentials();
var devStoreBlobService = azure.createBlobService(devStoreCreds);
assert.strictEqual(devStoreBlobService.storageAccount, StorageServiceClientConstants.DEVSTORE_STORAGE_ACCOUNT);
@ -36,7 +36,7 @@ describe('StorageServiceClientTests', function () {
assert.strictEqual(devStoreBlobService.host.primaryHost, 'http://127.0.0.1:10000/devstoreaccount1');
assert.strictEqual(devStoreBlobService.host.secondaryHost, 'http://127.0.0.1:10000/devstoreaccount1-secondary');
devStoreCreds = azure.generateDevelopmentStorageCredendentials('http://ipv4.fiddler');
devStoreCreds = azure.generateDevelopmentStorageCredentials('http://ipv4.fiddler');
devStoreBlobService = azure.createBlobService(devStoreCreds);
assert.strictEqual(devStoreBlobService.storageAccount, StorageServiceClientConstants.DEVSTORE_STORAGE_ACCOUNT);
@ -103,7 +103,7 @@ describe('StorageServiceClientTests', function () {
var normalizedError = StorageServiceClient._normalizeError(error);
normalizedError.should.be.an.instanceOf(Error);
normalizedError.should.have.keys('detail', 'resultcode', 'somethingelse');
normalizedError.should.have.keys('code', 'detail', 'resultcode', 'somethingelse');
done();
});

Просмотреть файл

@ -21,6 +21,7 @@ var testutil = require('../../framework/util');
// Lib includes
var ISO8061Date = testutil.libRequire('common/util/iso8061date');
var date = testutil.libRequire('common/util/date');
describe('iso8061date-tests', function () {
it('parse should work', function (done) {
@ -71,3 +72,29 @@ describe('iso8061date-tests', function () {
done();
});
});
describe('date-tests', function () {
it ('daysFromNow should work', function (done) {
var shift = 5;
assert.equal(date.daysFromNow(shift).getDay(), ((new Date()).getDay() + shift) % 7);
done();
});
it ('hoursFromNow should work', function (done) {
var shift = 20;
assert.equal(date.hoursFromNow(shift).getHours(), ((new Date()).getHours() + shift) % 24);
done();
});
it ('minutesFromNow should work', function (done) {
var shift = 20;
assert.equal(date.minutesFromNow(shift).getMinutes(), ((new Date()).getMinutes() + shift) % 60);
done();
});
it ('secondsFromNow should work', function (done) {
var shift = 58;
assert.equal(date.secondsFromNow(shift).getSeconds(), ((new Date()).getSeconds() + shift) % 60);
done();
});
});

Просмотреть файл

@ -21,6 +21,7 @@ var testutil = require('../../framework/util');
// Lib includes
var util = testutil.libRequire('common/util/util');
var speedSummary = testutil.libRequire('common/streams/speedsummary');
describe('util-tests', function() {
it('should be an empty object', function (done) {
@ -107,6 +108,80 @@ describe('util-tests', function() {
assert.equal(util.tryGetValueChain({a: { b: { c: 'd' }}}, [ 'a', 'b', 'k' ]), null);
assert.equal(util.tryGetValueChain(null, [ 'a', 'b', 'k' ]), null);
done();
});
});
describe('speed-summary-tests', function() {
it('getElapsedSeconds should work', function (done) {
var summary = new speedSummary('test');
assert.equal(summary.getElapsedSeconds(true), '00:00:00');
assert.equal(summary.getElapsedSeconds(false), 0);
done();
});
it('getCompletePercent should work', function (done) {
var summary = new speedSummary('test');
summary.totalSize = 100;
summary.completeSize = 1;
assert.equal(summary.getCompletePercent(2).toString(), '1.00');
done();
});
it('getAverageSpeed should work', function (done) {
var summary = new speedSummary('test');
summary.totalSize = 100;
summary.completeSize = 10;
console.log(summary.getAverageSpeed(false));
assert.equal(summary.getAverageSpeed(true), '10.00B/S');
assert.equal(summary.getAverageSpeed(false).toString(), '10');
done();
});
it('getSpeed should work', function (done) {
var summary = new speedSummary('test');
summary.totalSize = 100;
summary.completeSize = 15;
assert.equal(summary.getSpeed(true), '0B/S');
assert.equal(summary.getSpeed(false).toString(), '0');
done();
});
it('increment should work', function (done) {
var summary = new speedSummary('test');
summary.totalSize = 100;
summary.completeSize = 15;
assert.equal(summary.increment(10), 25);
done();
});
it('getAutoIncrementFunction should work', function (done) {
var summary = new speedSummary('test');
summary.totalSize = 100;
summary.completeSize = 15;
var increase = summary.getAutoIncrementFunction(10);
increase();
assert.equal(summary.getCompleteSize(false), 25);
done();
});
it('getTotalSize should work', function (done) {
var summary = new speedSummary('test');
summary.totalSize = 100;
assert.equal(summary.getTotalSize(true), '100.00B');
assert.equal(summary.getTotalSize(false), 100);
done();
});
it('getCompleteSize should work', function (done) {
var summary = new speedSummary('test');
summary.totalSize = 100;
summary.completeSize = 15;
var increase = summary.getAutoIncrementFunction(10);
increase();
assert.equal(summary.getCompleteSize(false), 25);
increase();
assert.equal(summary.getCompleteSize(true), '35.00B');
done();
});
});

Просмотреть файл

@ -19,26 +19,182 @@ var should = require('should');
var testutil = require('../../framework/util');
var Validate = testutil.libRequire('common/util/validate');
describe('servicesettings-tests', function () {
describe('isValidUri', function () {
it('should work', function () {
Validate.isValidUri('http://www.microsoft.com').should.be.ok;
Validate.isValidUri('http://www.microsoft.com').should.equal(true);
(function() {
Validate.isValidUri('something');
}).should.throw('The provided URI "something" is invalid.');
});
describe('validator-tests', function () {
it('isValidEnumValue should work', function (done) {
Validate.isValidEnumValue('a', ['a', 'b', 'c']).should.be.ok;
(function() {
Validate.isValidEnumValue('d', ['a', 'b', 'c']);
}).should.throw('Invalid value: d. Options are: a,b,c.');
done();
});
it('isValidUri should work', function (done) {
Validate.isValidUri('http://www.microsoft.com').should.be.ok;
Validate.isValidUri('http://www.microsoft.com').should.equal(true);
(function() {
Validate.isValidUri('something');
}).should.throw('The provided URI "something" is invalid.');
done();
});
it('isValidHost should work', function (done) {
Validate.isValidHost('http://www.microsoft.com').should.be.ok;
(function() {
Validate.isValidHost('something');
}).should.throw('The provided URI "something" is invalid.');
done();
});
it('isValidUuid should work', function (done) {
Validate.isValidUuid('3c9c1238-ea95-4f57-842d-66012ff4b503').should.be.ok;
(function() {
Validate.isValidUuid('something');
}).should.throw('The value is not a valid UUID format.');
done();
});
describe('isBase64Encoded', function () {
it('should work', function () {
Validate.isBase64Encoded('AhlzsbLRkjfwObuqff3xrhB2yWJNh1EMptmcmxFJ6fvPTVX3PZXwrG2YtYWf5DPMVgNsteKStM5iBLlknYFVoA==').should.be.ok;
var key = '__A&*INVALID-@Key';
(function() {
Validate.isBase64Encoded(key);
}).should.throw('The provided account key ' + key + ' is not a valid base64 string.');
});
it('isBase64Encoded should work', function (done) {
Validate.isBase64Encoded('AhlzsbLRkjfwObuqff3xrhB2yWJNh1EMptmcmxFJ6fvPTVX3PZXwrG2YtYWf5DPMVgNsteKStM5iBLlknYFVoA==').should.be.ok;
var key = '__A&*INVALID-@Key';
(function() {
Validate.isBase64Encoded(key);
}).should.throw('The provided account key ' + key + ' is not a valid base64 string.');
done();
});
it('isValidFunction should work', function (done) {
var test = function () {};
Validate.isValidFunction(test).should.equal(true);
(function() {
Validate.isValidFunction('something', 'testFunc');
}).should.throw('testFunc must be specified.');
done();
});
it('containerNameIsValid should work', function (done) {
Validate.containerNameIsValid('aaaaaa').should.equal(true);
Validate.containerNameIsValid('$root').should.equal(true);
Validate.containerNameIsValid('$logs').should.equal(true);
(function() {
Validate.containerNameIsValid('');
}).should.throw('Container name must be a non empty string.');
(function() {
Validate.containerNameIsValid('aa');
}).should.throw('Container name must be between 3 and 63 characters long.');
(function() {
Validate.containerNameIsValid('a[b]');
}).should.throw('Container name format is incorrect.');
done();
});
it('blobNameIsValid should work', function (done) {
Validate.blobNameIsValid('aaaaaa', 'bbbbbb').should.equal(true);
Validate.blobNameIsValid('$logs', 'a/b/c').should.equal(true);
Validate.blobNameIsValid('$logs', '@#$%').should.equal(true);
(function() {
Validate.blobNameIsValid('aaaaaa', '');
}).should.throw('Blob name is not specified.');
(function() {
Validate.blobNameIsValid('$root', 'a/b/c');
}).should.throw('Blob name format is incorrect.');
done();
});
it('shareNameIsValid should work', function (done) {
Validate.shareNameIsValid('aaaaaa').should.equal(true);
(function() {
Validate.shareNameIsValid('');
}).should.throw('Share name must be a non empty string.');
(function() {
Validate.shareNameIsValid('aa');
}).should.throw('Share name must be between 3 and 63 characters long.');
(function() {
Validate.shareNameIsValid('a[b]');
}).should.throw('Share name format is incorrect.');
done();
});
it('queueNameIsValid should work', function (done) {
Validate.queueNameIsValid('aaaaaa').should.equal(true);
(function() {
Validate.queueNameIsValid('');
}).should.throw('Queue name must be a non empty string.');
(function() {
Validate.queueNameIsValid('aa');
}).should.throw('Queue name must be between 3 and 63 characters long.');
(function() {
Validate.queueNameIsValid('a[b]');
}).should.throw('Queue name format is incorrect.');
done();
});
it('tableNameIsValid should work', function (done) {
Validate.tableNameIsValid('aaaaaa').should.equal(true);
Validate.tableNameIsValid('$MetricsCapacityBlob').should.equal(true);
Validate.tableNameIsValid('$MetricsHourPrimaryTransactionsBlob').should.equal(true);
Validate.tableNameIsValid('$MetricsHourPrimaryTransactionsQueue').should.equal(true);
Validate.tableNameIsValid('$MetricsHourPrimaryTransactionsTable').should.equal(true);
Validate.tableNameIsValid('$MetricsMinutePrimaryTransactionsBlob').should.equal(true);
Validate.tableNameIsValid('$MetricsMinutePrimaryTransactionsQueue').should.equal(true);
Validate.tableNameIsValid('$MetricsMinutePrimaryTransactionsTable').should.equal(true);
Validate.tableNameIsValid('$MetricsHourSecondaryTransactionsBlob').should.equal(true);
Validate.tableNameIsValid('$MetricsHourSecondaryTransactionsQueue').should.equal(true);
Validate.tableNameIsValid('$MetricsHourSecondaryTransactionsTable').should.equal(true);
Validate.tableNameIsValid('$MetricsMinuteSecondaryTransactionsBlob').should.equal(true);
Validate.tableNameIsValid('$MetricsMinuteSecondaryTransactionsQueue').should.equal(true);
Validate.tableNameIsValid('$MetricsMinuteSecondaryTransactionsTable').should.equal(true);
(function() {
Validate.tableNameIsValid('');
}).should.throw('Table name must be a non empty string.');
(function() {
Validate.tableNameIsValid('aa');
}).should.throw('Table name must be between 3 and 63 characters long.');
(function() {
Validate.tableNameIsValid('a[b]');
}).should.throw('Table name format is incorrect.');
done();
});
it('pageRangesAreValid should work', function (done) {
Validate.pageRangesAreValid(512, 1023, 1024 * 1024).should.equal(true);
(function() {
Validate.pageRangesAreValid(1, 1023, 1024 * 1024).should.equal(true);
}).should.throw('Start byte offset must be a modulus of 512.');
(function() {
Validate.pageRangesAreValid(0, 1024, 1024 * 1024).should.equal(true);
}).should.throw('End byte offset must be a modulus of 512 minus 1.');
(function() {
Validate.pageRangesAreValid(0, 1024 * 1024 + 511, 1024 * 1024);
}).should.throw('Page blob size cant be larger than ' + (1024 * 1024) + ' bytes.');
done();
});
it('blobTypeIsValid should work', function (done) {
Validate.blobTypeIsValid('BlockBlob').should.be.ok;
Validate.blobTypeIsValid('PageBlob').should.be.ok;
Validate.blobTypeIsValid('AppendBlob').should.be.ok;
(function() {
Validate.blobTypeIsValid('something');
}).should.throw('Invalid value: something. Options are: BlockBlob,PageBlob,AppendBlob.');
done();
});
it('shareACLIsValid should work', function (done) {
Validate.shareACLIsValid(null).should.be.ok;
(function() {
Validate.shareACLIsValid('share');
}).should.throw('The access type is not supported.');
(function() {
Validate.shareACLIsValid('file');
}).should.throw('The access type is not supported.');
done();
});
it('shareQuotaIsValid should work', function (done) {
Validate.shareQuotaIsValid(null).should.be.ok;
(function() {
Validate.shareQuotaIsValid(-1);
}).should.throw('The share quota value, in GB, must be greater than 0.');
done();
});
});

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,7 +1,7 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'TableEndpoint=http://yaxiatest.table.testch1.dnsdemo4.com/;QueueEndpoint=http://yaxiatest.queue.testch1.dnsdemo4.com/;FileEndpoint=http://yaxiatest.file.testch1.dnsdemo4.com/;BlobEndpoint=http://yaxiatest.blob.testch1.dnsdemo4.com/;AccountName=yaxiatest;AccountKey=null';
}
exports.scopes = [];

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,242 +1,211 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'TableEndpoint=http://yaxiatest.table.testch1.dnsdemo4.com/;QueueEndpoint=http://yaxiatest.queue.testch1.dnsdemo4.com/;FileEndpoint=http://yaxiatest.file.testch1.dnsdemo4.com/;BlobEndpoint=http://yaxiatest.blob.testch1.dnsdemo4.com/;AccountName=yaxiatest;AccountKey=null';
}
exports.scopes = [[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'expretry1\')',
location: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'expretry1\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'fe0000f6-0002-0029-30be-f1e045000000',
'x-ms-request-id': '1603094f-0002-0002-1d55-5310d2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'expretry1\')',
date: 'Fri, 18 Sep 2015 03:01:47 GMT',
connection: 'close' });
dataserviceid: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'expretry1\')',
date: 'Sat, 28 Feb 2015 12:55:13 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableAlreadyExists</code><message xml:lang=\"en-US\">The table specified already exists.\nRequestId:32530dce-0002-0000-58be-f19607000000\nTime:2015-09-18T03:01:48.0825258Z</message></error>", { 'cache-control': 'no-cache',
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableAlreadyExists</code><message xml:lang=\"en-US\">The table specified already exists.\nRequestId:f7bb3bea-0002-0003-4f55-5375ea000000\nTime:2015-02-28T12:55:15.6889600Z</message><innererror><message>Table 'expretry1' already exists</message><type>Microsoft.Cis.Services.Nephos.Common.Storage.ContainerAlreadyExistsException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableDataContext.ExecuteOnUtilityTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableDataContext.cs:line 709&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '32530dce-0002-0000-58be-f19607000000',
'x-ms-request-id': 'f7bb3bea-0002-0003-4f55-5375ea000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
date: 'Fri, 18 Sep 2015 03:01:47 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:15 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/Tables(%27expretry1%27)')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://xplat.table.core.windows.net/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://xplat.table.core.windows.net/Tables('expretry1')</id><category term=\"xplat.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('expretry1')\" /><title /><updated>2015-09-18T03:01:48Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>expretry1</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://yaxiatest.table.testch1.dnsdemo4.com/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://yaxiatest.table.testch1.dnsdemo4.com/Tables('expretry1')</id><category term=\"yaxiatest.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('expretry1')\" /><title /><updated>2015-02-28T12:55:15Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>expretry1</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/atom+xml;type=entry;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '2aa27e24-0002-003c-20be-f122dc000000',
'x-ms-request-id': '76be1165-0002-0004-1b55-534e43000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:01:47 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:14 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27expretry1%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '05884169-0002-0027-1fbe-f10c4e000000',
'x-ms-request-id': 'f7bb3bec-0002-0003-5055-5375ea000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:01:48 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:16 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'expretry2\')',
location: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'expretry2\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '651d8ebd-0002-0013-75be-f1a3e6000000',
'x-ms-request-id': '76be1173-0002-0004-2855-534e43000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'expretry2\')',
date: 'Fri, 18 Sep 2015 03:01:48 GMT',
connection: 'close' });
dataserviceid: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'expretry2\')',
date: 'Sat, 28 Feb 2015 12:55:15 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27expretry2%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'fa3f0478-0002-003b-29be-f1d459000000',
'x-ms-request-id': '9ec194f9-0002-0000-4055-53daa2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:01:48 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:17 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableBeingDeleted</code><message xml:lang=\"en-US\">The specified table is being deleted. Try operation later.\nRequestId:36dee1cd-0002-0026-11be-f10db3000000\nTime:2015-09-18T03:01:48.2944451Z</message></error>", { 'cache-control': 'no-cache',
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableBeingDeleted</code><message xml:lang=\"en-US\">The specified table is being deleted. Try operation later.\nRequestId:8a044d29-0002-0001-2055-53bf9a000000\nTime:2015-02-28T12:55:18.6811701Z</message><innererror><message>Exception of type 'Microsoft.Cis.Services.Nephos.Common.Storage.ContainerBeingDeletedException' was thrown.</message><type>Microsoft.Cis.Services.Nephos.Common.Storage.ContainerBeingDeletedException</type><stacktrace> at Microsoft.Cis.Services.Nephos.Common.Storage.ExceptionManager.ReThrowIfXStoreException(Exception e) in x:\\btsdx\\410604\\services\\xstore\\XFE\\providers\\xstore\\Blob\\ExceptionManager.cs:line 478&#xD;\n at Microsoft.Cis.Services.Nephos.Common.Storage.StorageAccount.CreateTableContainer(String tableName, Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata) in x:\\btsdx\\410604\\services\\xstore\\XFE\\providers\\xstore\\Blob\\StorageAccount.cs:line 947&#xD;\n at Microsoft.UtilityComputing.UtilityTableDataContext.ExecuteOnUtilityTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableDataContext.cs:line 722&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace><internalexception><message>\"Container is being deleted.\"</message><type>Microsoft.XStore.XContainerException</type><stacktrace> at Microsoft.XStore.XBlob.XContainer.CreateContainerInTable(Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata, TimeSpan timeout) in x:\\btsdx\\410604\\services\\xstore\\xtable\\api\\managed\\xcontainer.cpp:line 651&#xD;\n at Microsoft.XStore.XBlob.XStoreAccount.CreateTableContainer(String containerName, Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata) in x:\\btsdx\\410604\\services\\xstore\\xtable\\api\\managed\\xblobstore.cpp:line 4366&#xD;\n at Microsoft.Cis.Services.Nephos.Common.Storage.StorageAccount.CreateTableContainer(String tableName, Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata) in x:\\btsdx\\410604\\services\\xstore\\XFE\\providers\\xstore\\Blob\\StorageAccount.cs:line 938</stacktrace></internalexception></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '36dee1cd-0002-0026-11be-f10db3000000',
'x-ms-request-id': '8a044d29-0002-0001-2055-53bf9a000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
date: 'Fri, 18 Sep 2015 03:01:47 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:17 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableBeingDeleted</code><message xml:lang=\"en-US\">The specified table is being deleted. Try operation later.\nRequestId:ce1cba50-0002-0012-3bbe-f1a21b000000\nTime:2015-09-18T03:02:19.7019880Z</message></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'ce1cba50-0002-0012-3bbe-f1a21b000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
date: 'Fri, 18 Sep 2015 03:02:19 GMT',
connection: 'close' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'expretry2\')',
location: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'expretry2\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'd7cc4e64-0002-003a-6cbe-f1d5a4000000',
'x-ms-request-id': '16030ecc-0002-0002-6f55-5310d2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'expretry2\')',
date: 'Fri, 18 Sep 2015 03:02:49 GMT',
connection: 'close' });
dataserviceid: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'expretry2\')',
date: 'Sat, 28 Feb 2015 12:55:46 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/Tables(%27expretry2%27)')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://xplat.table.core.windows.net/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://xplat.table.core.windows.net/Tables('expretry2')</id><category term=\"xplat.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('expretry2')\" /><title /><updated>2015-09-18T03:02:50Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>expretry2</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://yaxiatest.table.testch1.dnsdemo4.com/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://yaxiatest.table.testch1.dnsdemo4.com/Tables('expretry2')</id><category term=\"yaxiatest.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('expretry2')\" /><title /><updated>2015-02-28T12:55:49Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>expretry2</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/atom+xml;type=entry;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'c95c8920-0002-0025-7ebe-f10eb4000000',
'x-ms-request-id': 'f7bb3c19-0002-0003-5f55-5375ea000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:49 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:49 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27expretry2%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '11b4ea09-0002-0010-51be-f1a0e1000000',
'x-ms-request-id': '76be1322-0002-0004-3655-534e43000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:49 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:49 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27expretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:76626c87-0002-0024-09be-f10f49000000\nTime:2015-09-18T03:02:51.0858751Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:9ec196fe-0002-0000-2655-53daa2000000\nTime:2015-02-28T12:55:50.8985732Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '76626c87-0002-0024-09be-f10f49000000',
'x-ms-request-id': '9ec196fe-0002-0000-2655-53daa2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:50 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:50 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27expretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:adff93c9-0002-004c-31be-f15118000000\nTime:2015-09-18T03:02:51.4144391Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:8a04533f-0002-0001-1355-53bf9a000000\nTime:2015-02-28T12:55:51.6291701Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'adff93c9-0002-004c-31be-f15118000000',
'x-ms-request-id': '8a04533f-0002-0001-1355-53bf9a000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:51 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:51 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27expretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:6a6476f5-0002-0038-27be-f1d75e000000\nTime:2015-09-18T03:02:51.6711076Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:16030f40-0002-0002-5e55-5310d2000000\nTime:2015-02-28T12:55:50.4340275Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '6a6476f5-0002-0038-27be-f1d75e000000',
'x-ms-request-id': '16030f40-0002-0002-5e55-5310d2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:51 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:49 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27expretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:668320b6-0002-000f-56be-f17bf1000000\nTime:2015-09-18T03:02:51.6403661Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:f7bb3c1b-0002-0003-6055-5375ea000000\nTime:2015-02-28T12:55:52.3612924Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '668320b6-0002-000f-56be-f17bf1000000',
'x-ms-request-id': 'f7bb3c1b-0002-0003-6055-5375ea000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:51 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:52 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/Tables(%27expretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:add40516-0002-0037-30be-f13aa8000000\nTime:2015-09-18T03:02:52.0048670Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:76be1325-0002-0004-3855-534e43000000\nTime:2015-02-28T12:55:52.4486028Z</message><innererror><message>Resource not found for the segment 'Tables'.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at System.Data.Services.Providers.DataServiceExecutionProviderWrapper.GetSingleResultFromRequest(SegmentInfo segmentInfo)&#xD;\n at System.Data.Services.DataService`1.CompareETagAndWriteResponse(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)&#xD;\n at System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'add40516-0002-0037-30be-f13aa8000000',
'x-ms-request-id': '76be1325-0002-0004-3855-534e43000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:51 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:52 GMT' });
return result; }]];

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,7 +1,7 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=https;AccountName=xplat;AccountKey=null';
}
exports.scopes = [];

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,83 +1,83 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'TableEndpoint=http://yaxiatest.table.testch1.dnsdemo4.com/;QueueEndpoint=http://yaxiatest.queue.testch1.dnsdemo4.com/;FileEndpoint=http://yaxiatest.file.testch1.dnsdemo4.com/;BlobEndpoint=http://yaxiatest.blob.testch1.dnsdemo4.com/;AccountName=yaxiatest;AccountKey=null';
}
exports.scopes = [[function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '5735a707-001a-0029-49c1-f1e045000000',
'x-ms-request-id': '8c7f103e-001a-0004-27f2-404e43000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:20:46 GMT' });
date: 'Thu, 05 Feb 2015 03:20:59 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service&timeout=10000')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'f228287b-001a-0015-70c1-f1549e000000',
'x-ms-request-id': '47a2165f-001a-0000-18f2-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:20:46 GMT' });
date: 'Thu, 05 Feb 2015 03:21:00 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service&timeout=9000')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '8dbb96f6-001a-003a-80c1-f1d5a4000000',
'x-ms-request-id': '5d17069b-001a-0001-0df2-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:20:47 GMT' });
date: 'Thu, 05 Feb 2015 03:21:00 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service&timeout=10000')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'bd183115-001a-0025-52c1-f10eb4000000',
'x-ms-request-id': '47a21688-001a-0000-41f2-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:20:47 GMT' });
date: 'Thu, 05 Feb 2015 03:21:01 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service&timeout=9000')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '3615cd7d-001a-0011-07c1-f1a11c000000',
'x-ms-request-id': '5d1706d5-001a-0001-42f2-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:20:48 GMT' });
date: 'Thu, 05 Feb 2015 03:21:01 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b259c106-001a-0039-6ec1-f1d6a3000000',
'x-ms-request-id': '8601435d-001a-0002-16f2-4010d2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:20:48 GMT' });
date: 'Thu, 05 Feb 2015 03:21:02 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'dbb00bbc-001a-004d-58c1-f150e5000000',
'x-ms-request-id': '8c7f10a1-001a-0004-02f2-404e43000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:20:48 GMT' });
date: 'Thu, 05 Feb 2015 03:21:02 GMT' });
return result; }]];

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,242 +1,211 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'TableEndpoint=http://yaxiatest.table.testch1.dnsdemo4.com/;QueueEndpoint=http://yaxiatest.queue.testch1.dnsdemo4.com/;FileEndpoint=http://yaxiatest.file.testch1.dnsdemo4.com/;BlobEndpoint=http://yaxiatest.blob.testch1.dnsdemo4.com/;AccountName=yaxiatest;AccountKey=null';
}
exports.scopes = [[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'linearretry1\')',
location: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'linearretry1\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a85d89b1-0002-004b-1dbe-f1a79d000000',
'x-ms-request-id': '9ec19701-0002-0000-2855-53daa2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'linearretry1\')',
date: 'Fri, 18 Sep 2015 03:02:51 GMT',
connection: 'close' });
dataserviceid: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'linearretry1\')',
date: 'Sat, 28 Feb 2015 12:55:53 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableAlreadyExists</code><message xml:lang=\"en-US\">The table specified already exists.\nRequestId:a72b0c88-0002-0023-6dbe-f1f9cc000000\nTime:2015-09-18T03:02:52.7490771Z</message></error>", { 'cache-control': 'no-cache',
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableAlreadyExists</code><message xml:lang=\"en-US\">The table specified already exists.\nRequestId:8a0453ba-0002-0001-0a55-53bf9a000000\nTime:2015-02-28T12:55:54.3401701Z</message><innererror><message>Table 'linearretry1' already exists</message><type>Microsoft.Cis.Services.Nephos.Common.Storage.ContainerAlreadyExistsException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableDataContext.ExecuteOnUtilityTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableDataContext.cs:line 709&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a72b0c88-0002-0023-6dbe-f1f9cc000000',
'x-ms-request-id': '8a0453ba-0002-0001-0a55-53bf9a000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
date: 'Fri, 18 Sep 2015 03:02:51 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:53 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/Tables(%27linearretry1%27)')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://xplat.table.core.windows.net/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://xplat.table.core.windows.net/Tables('linearretry1')</id><category term=\"xplat.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('linearretry1')\" /><title /><updated>2015-09-18T03:02:53Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>linearretry1</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://yaxiatest.table.testch1.dnsdemo4.com/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://yaxiatest.table.testch1.dnsdemo4.com/Tables('linearretry1')</id><category term=\"yaxiatest.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('linearretry1')\" /><title /><updated>2015-02-28T12:55:53Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>linearretry1</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/atom+xml;type=entry;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '1d5dd2ed-0002-004a-49be-f1a660000000',
'x-ms-request-id': '16030fba-0002-0002-5355-5310d2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:53 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:52 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27linearretry1%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'cdbb5fe9-0002-0022-06be-f1f831000000',
'x-ms-request-id': 'f7bb3c20-0002-0003-6155-5375ea000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:52 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:54 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'linearretry2\')',
location: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'linearretry2\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'ce57683b-0002-0036-42be-f13b55000000',
'x-ms-request-id': '76be1329-0002-0004-3a55-534e43000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'linearretry2\')',
date: 'Fri, 18 Sep 2015 03:02:52 GMT',
connection: 'close' });
dataserviceid: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'linearretry2\')',
date: 'Sat, 28 Feb 2015 12:55:54 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27linearretry2%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a6f5851d-0002-000e-53be-f17a0c000000',
'x-ms-request-id': '9ec19709-0002-0000-2b55-53daa2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:02:54 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:55 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableBeingDeleted</code><message xml:lang=\"en-US\">The specified table is being deleted. Try operation later.\nRequestId:0102e750-0002-000d-4fbe-f1790b000000\nTime:2015-09-18T03:02:54.2584819Z</message></error>", { 'cache-control': 'no-cache',
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableBeingDeleted</code><message xml:lang=\"en-US\">The specified table is being deleted. Try operation later.\nRequestId:8a045444-0002-0001-1155-53bf9a000000\nTime:2015-02-28T12:55:57.0421701Z</message><innererror><message>Exception of type 'Microsoft.Cis.Services.Nephos.Common.Storage.ContainerBeingDeletedException' was thrown.</message><type>Microsoft.Cis.Services.Nephos.Common.Storage.ContainerBeingDeletedException</type><stacktrace> at Microsoft.Cis.Services.Nephos.Common.Storage.ExceptionManager.ReThrowIfXStoreException(Exception e) in x:\\btsdx\\410604\\services\\xstore\\XFE\\providers\\xstore\\Blob\\ExceptionManager.cs:line 478&#xD;\n at Microsoft.Cis.Services.Nephos.Common.Storage.StorageAccount.CreateTableContainer(String tableName, Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata) in x:\\btsdx\\410604\\services\\xstore\\XFE\\providers\\xstore\\Blob\\StorageAccount.cs:line 947&#xD;\n at Microsoft.UtilityComputing.UtilityTableDataContext.ExecuteOnUtilityTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableDataContext.cs:line 722&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace><internalexception><message>\"Container is being deleted.\"</message><type>Microsoft.XStore.XContainerException</type><stacktrace> at Microsoft.XStore.XBlob.XContainer.CreateContainerInTable(Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata, TimeSpan timeout) in x:\\btsdx\\410604\\services\\xstore\\xtable\\api\\managed\\xcontainer.cpp:line 651&#xD;\n at Microsoft.XStore.XBlob.XStoreAccount.CreateTableContainer(String containerName, Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata) in x:\\btsdx\\410604\\services\\xstore\\xtable\\api\\managed\\xblobstore.cpp:line 4366&#xD;\n at Microsoft.Cis.Services.Nephos.Common.Storage.StorageAccount.CreateTableContainer(String tableName, Nullable`1 expiryTime, Byte[] serviceMetadata, Byte[] applicationMetadata) in x:\\btsdx\\410604\\services\\xstore\\XFE\\providers\\xstore\\Blob\\StorageAccount.cs:line 938</stacktrace></internalexception></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '0102e750-0002-000d-4fbe-f1790b000000',
'x-ms-request-id': '8a045444-0002-0001-1155-53bf9a000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
date: 'Fri, 18 Sep 2015 03:02:53 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:55:56 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(409, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>TableBeingDeleted</code><message xml:lang=\"en-US\">The specified table is being deleted. Try operation later.\nRequestId:b5cd06c4-0002-0048-6dbe-f1a49a000000\nTime:2015-09-18T03:03:24.4080784Z</message></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b5cd06c4-0002-0048-6dbe-f1a49a000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
date: 'Fri, 18 Sep 2015 03:03:23 GMT',
connection: 'close' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'linearretry2\')',
location: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'linearretry2\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '8680c531-0002-001f-4abe-f14d17000000',
'x-ms-request-id': '9ec19731-0002-0000-3855-53daa2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'linearretry2\')',
date: 'Fri, 18 Sep 2015 03:03:54 GMT',
connection: 'close' });
dataserviceid: 'http://yaxiatest.table.testch1.dnsdemo4.com/Tables(\'linearretry2\')',
date: 'Sat, 28 Feb 2015 12:56:27 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/Tables(%27linearretry2%27)')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://xplat.table.core.windows.net/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://xplat.table.core.windows.net/Tables('linearretry2')</id><category term=\"xplat.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('linearretry2')\" /><title /><updated>2015-09-18T03:03:55Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>linearretry2</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://yaxiatest.table.testch1.dnsdemo4.com/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://yaxiatest.table.testch1.dnsdemo4.com/Tables('linearretry2')</id><category term=\"yaxiatest.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('linearretry2')\" /><title /><updated>2015-02-28T12:56:28Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>linearretry2</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/atom+xml;type=entry;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '3d68c483-0002-000b-3dbe-f18e73000000',
'x-ms-request-id': '8a045998-0002-0001-4655-53bf9a000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:03:54 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:56:27 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27linearretry2%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '48621f97-0002-0033-6ebe-f1cf2a000000',
'x-ms-request-id': '160314f6-0002-0002-6d55-5310d2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:03:54 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:56:27 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27linearretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:1193fd07-0002-0047-74be-f1496c000000\nTime:2015-09-18T03:03:55.8908590Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:f7bb3c44-0002-0003-6955-5375ea000000\nTime:2015-02-28T12:56:29.0926189Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '1193fd07-0002-0047-74be-f1496c000000',
'x-ms-request-id': 'f7bb3c44-0002-0003-6955-5375ea000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:03:55 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:56:28 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27linearretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:7271fb79-0002-0046-2fbe-f14891000000\nTime:2015-09-18T03:03:56.2773268Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:76be1351-0002-0004-4655-534e43000000\nTime:2015-02-28T12:56:29.2042780Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '7271fb79-0002-0046-2fbe-f14891000000',
'x-ms-request-id': '76be1351-0002-0004-4655-534e43000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:03:56 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:56:29 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27linearretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:bc2abcd3-0002-001e-7bbe-f14cea000000\nTime:2015-09-18T03:03:56.6373824Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:9ec19736-0002-0000-3955-53daa2000000\nTime:2015-02-28T12:56:30.3346292Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'bc2abcd3-0002-001e-7bbe-f14cea000000',
'x-ms-request-id': '9ec19736-0002-0000-3955-53daa2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:03:56 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:56:30 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.delete('/Tables(%27linearretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:93e1e74e-0002-0032-5abe-f1ced7000000\nTime:2015-09-18T03:03:56.6648017Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:8a045a02-0002-0001-2f55-53bf9a000000\nTime:2015-02-28T12:56:31.0891701Z</message><innererror><message>Resource not found.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at Microsoft.UtilityComputing.UtilityTableUpdatable.GetTable(ChangeDescription changeDescription) in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 258&#xD;\n at Microsoft.UtilityComputing.UtilityTableUpdatable.SaveChanges() in x:\\btsdx\\410604\\services\\xstore\\XTable\\Api\\Managed2\\UtilityTableUpdatable.cs:line 209&#xD;\n at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '93e1e74e-0002-0032-5abe-f1ced7000000',
'x-ms-request-id': '8a045a02-0002-0001-2f55-53bf9a000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:03:56 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:56:30 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/Tables(%27linearretry3%27)')
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:b24fc65e-0002-000a-23be-f18f8e000000\nTime:2015-09-18T03:03:56.9497110Z</message></error>", { 'cache-control': 'no-cache',
.reply(404, "<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"><code>ResourceNotFound</code><message xml:lang=\"en-US\">The specified resource does not exist.\nRequestId:16031558-0002-0002-4d55-5310d2000000\nTime:2015-02-28T12:56:29.8239661Z</message><innererror><message>Resource not found for the segment 'Tables'.</message><type>System.Data.Services.DataServiceException</type><stacktrace> at System.Data.Services.Providers.DataServiceExecutionProviderWrapper.GetSingleResultFromRequest(SegmentInfo segmentInfo)&#xD;\n at System.Data.Services.DataService`1.CompareETagAndWriteResponse(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)&#xD;\n at System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)&#xD;\n at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b24fc65e-0002-000a-23be-f18f8e000000',
'x-ms-request-id': '16031558-0002-0002-4d55-5310d2000000',
'x-ms-version': '2015-02-21',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:03:56 GMT',
connection: 'close' });
date: 'Sat, 28 Feb 2015 12:56:29 GMT' });
return result; }]];

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,139 +1,247 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=https;AccountName=xplat;AccountKey=null';
}
exports.scopes = [[],
[function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'eefa5718-0001-0009-20be-f18c89000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:58 GMT',
connection: 'close' });
'x-ms-request-id': '861e02e8-0001-0035-5b0b-744d29000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:50 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'ddf9a4ed-0001-0031-74be-f1cdd0000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:57 GMT',
connection: 'close' });
'x-ms-request-id': '4a8563fa-0001-0002-28a1-3a3d20000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:51 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat-secondary.blob.core.windows.net:80')
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '33525e54-0001-0027-22be-f16cff000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:57 GMT',
connection: 'close' });
'x-ms-request-id': '9e44f20e-0001-0037-31cb-00e56a000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:52 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat-secondary.blob.core.windows.net:80')
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '016323bc-0001-0004-2abe-f10334000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:58 GMT',
connection: 'close' });
'x-ms-request-id': 'b05fca6a-0001-000c-6d7d-c8b7c0000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:53 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '4f9e5435-0001-0030-2ebe-f1cc2d000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:59 GMT',
connection: 'close' });
'x-ms-request-id': 'd4f7f725-0001-000f-3144-e74779000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:53 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '423d00ce-0001-0044-2abe-f14a6b000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:58 GMT',
connection: 'close' });
'x-ms-request-id': '21b0e6aa-0001-0041-16da-351d13000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:53 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat-secondary.blob.core.windows.net:80')
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '873ccfb1-0001-001e-0dbe-f12c5b000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:58 GMT',
connection: 'close' });
'x-ms-request-id': '16d86cdb-0001-0039-5307-b033da000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:55 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat-secondary.blob.core.windows.net:80')
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '52a0461b-0001-003c-78be-f1426d000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:03:59 GMT',
connection: 'close' });
'x-ms-request-id': '70fbb72d-0001-001c-7369-e93764000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:55 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '49a2144a-0001-0043-7dbe-f1bcee000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:04:00 GMT',
connection: 'close' });
'x-ms-request-id': '1b11705a-0001-001f-1222-70dea4000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:55 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'e05857bb-0001-001b-5abe-f1b895000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:04:00 GMT',
connection: 'close' });
'x-ms-request-id': '0fb32273-0001-0006-563a-ce799a000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:58 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat-secondary.blob.core.windows.net:80')
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b2b654b7-0001-002e-14be-f17671000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:04:00 GMT',
connection: 'close' });
'x-ms-request-id': 'c64c3dda-0001-0009-7ba1-187146000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:57 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat-secondary.blob.core.windows.net:80')
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '958fc225-0001-0022-27be-f19880000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:04:00 GMT',
connection: 'close' });
'x-ms-request-id': 'cef024c8-0001-0026-37da-b272f8000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:11:59 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '848d363d-0001-0043-167f-7fc8e5000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:00 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b71a615f-0001-0024-4cb6-90080b000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:02 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '05e46e55-0001-0019-132d-6e26bd000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:03 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '3aede1fc-0001-0022-5bbf-225183000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:05 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '19a4d28e-0001-0031-7fcf-6cea01000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:06 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '1f3fd5c1-0001-000c-5b8d-2ec717000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:07 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'e79e6c04-0001-003d-78ea-64923c000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:09 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '80a93814-0001-001e-1c22-6deb46000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:10 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'd971c5ab-0001-0005-40ea-a817ef000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:10 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b44d7787-0001-0012-3a24-ebbf62000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:13 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'fa299d28-0001-002b-516a-e09de9000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:14 GMT' });
return result; },
function (nock) {
var result =
nock('https://xplat-secondary.blob.core.windows.net:443')
.head('/secondarytestscontainer?restype=container')
.reply(404, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '1f362416-0001-0048-4e3f-2e76ad000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:12:15 GMT' });
return result; }]];

Просмотреть файл

@ -1,350 +1,322 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'TableEndpoint=http://yaxiatest.table.testch1.dnsdemo4.com/;QueueEndpoint=http://yaxiatest.queue.testch1.dnsdemo4.com/;FileEndpoint=http://yaxiatest.file.testch1.dnsdemo4.com/;BlobEndpoint=http://yaxiatest.blob.testch1.dnsdemo4.com/;AccountName=yaxiatest;AccountKey=null';
}
exports.scopes = [[function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('http://yaxiatest.blob.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '7ec9d6dc-0001-002e-19be-f116c0000000',
'x-ms-request-id': '34376880-0001-0001-61f9-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:04:00 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:09:17 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('http://yaxiatest.blob.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>true</Read><Write>true</Write><Delete>true</Delete><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>true</Enabled><IncludeAPIs>true</IncludeAPIs><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>true</Enabled><IncludeAPIs>true</IncludeAPIs><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></MinuteMetrics><Cors><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule></Cors><DefaultServiceVersion>2015-02-21</DefaultServiceVersion></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
vary: 'Origin',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '3563a4b9-0001-0006-60be-f1617f000000',
'x-ms-request-id': '83374b22-0001-0000-35f9-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:04:31 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:09:49 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.queue.core.windows.net:80')
nock('http://yaxiatest.queue.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '7f8b444c-0003-0019-34be-f1ba6f000000',
'x-ms-request-id': '92416a31-0003-0001-33f9-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:04:34 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:09:49 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.queue.core.windows.net:80')
nock('http://yaxiatest.queue.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>true</Read><Write>true</Write><Delete>true</Delete><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>true</Enabled><IncludeAPIs>true</IncludeAPIs><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>true</Enabled><IncludeAPIs>true</IncludeAPIs><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></MinuteMetrics><Cors><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule></Cors></StorageServiceProperties>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml',
vary: 'Origin',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '253cac08-0003-003e-4fbe-f12026000000',
'x-ms-request-id': '9ecd03b5-0003-0002-74f9-4010d2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:05:05 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:10:20 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '90f0f1a5-0002-003d-1dbe-f12321000000',
'x-ms-request-id': 'dc459f7f-0002-0003-1af9-4075ea000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:05:05 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:10:21 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>true</Read><Write>true</Write><Delete>true</Delete><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>true</Enabled><IncludeAPIs>true</IncludeAPIs><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>true</Enabled><IncludeAPIs>true</IncludeAPIs><RetentionPolicy><Enabled>true</Enabled><Days>1</Days></RetentionPolicy></MinuteMetrics><Cors><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule></Cors></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
vary: 'Origin',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '058986fa-0002-0027-52be-f10c4e000000',
'x-ms-request-id': 'ee84bee6-0002-0002-79f9-4010d2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:05:35 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:10:51 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '67a6ab24-001a-0013-7ebe-f1a3e6000000',
'x-ms-request-id': '83cf2a5a-001a-0003-59f9-4075ea000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:05:38 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:10:52 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule><CorsRule><AllowedMethods>GET,PUT</AllowedMethods><AllowedOrigins>www.ab.com,www.bc.com</AllowedOrigins><AllowedHeaders>x-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*</AllowedHeaders><ExposedHeaders>x-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*</ExposedHeaders><MaxAgeInSeconds>500</MaxAgeInSeconds></CorsRule></Cors></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
vary: 'Origin',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '8dbb827f-001a-003a-2abe-f1d5a4000000',
'x-ms-request-id': '83cf3297-001a-0003-56f9-4075ea000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:06:09 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:11:23 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('http://yaxiatest.blob.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'cb583c9a-0001-0025-60be-f10eb4000000',
'x-ms-request-id': '8337af5b-0001-0000-3af9-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:06:09 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:11:24 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('http://yaxiatest.blob.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /><DefaultServiceVersion>2015-02-21</DefaultServiceVersion></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '82c81301-0001-004a-7fbf-f1a660000000',
'x-ms-request-id': '0632fe8c-0001-0003-1af9-4075ea000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:06:40 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:11:54 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.queue.core.windows.net:80')
nock('http://yaxiatest.queue.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '10e58d79-0003-0022-02bf-f1f831000000',
'x-ms-request-id': '72bd35aa-0003-0004-2bf9-404e43000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:06:41 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:11:55 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.queue.core.windows.net:80')
nock('http://yaxiatest.queue.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /></StorageServiceProperties>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'bebb5794-0003-0035-63bf-f13852000000',
'x-ms-request-id': '699dec23-0003-0000-08f9-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:07:11 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:12:25 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b5cd8b62-0002-0048-70bf-f1a49a000000',
'x-ms-request-id': 'e438af94-0002-0001-54f9-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:07:12 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:12:26 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b43876c7-0002-000c-4bbf-f178f6000000',
'x-ms-request-id': '14014122-0002-0000-68fa-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:07:42 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:12:56 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '9c1d0ac5-001a-0020-0fbf-f1facb000000',
'x-ms-request-id': '5d18edc2-001a-0001-7cfa-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:07:44 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:12:57 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '69882c6c-001a-0047-3ebf-f1496c000000',
'x-ms-request-id': '83cf4b10-001a-0003-4efa-4075ea000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:08:15 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:13:28 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('http://yaxiatest.blob.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /><DefaultServiceVersion>2015-02-21</DefaultServiceVersion></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '778f4829-0001-0046-1cbf-f14891000000',
'x-ms-request-id': '6a09d264-0001-0004-2efa-404e43000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:08:15 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:13:28 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('http://yaxiatest.blob.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'e89928bb-0001-001e-38bf-f14cea000000',
'x-ms-request-id': '83383607-0001-0000-4bfa-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:08:16 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:13:29 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.blob.core.windows.net:80')
nock('http://yaxiatest.blob.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /><DefaultServiceVersion>2015-02-21</DefaultServiceVersion></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '93643495-0001-0045-4cbf-f14b96000000',
'x-ms-request-id': '3438a5f0-0001-0001-65fa-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:08:46 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:14:00 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.queue.core.windows.net:80')
nock('http://yaxiatest.queue.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /></StorageServiceProperties>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a96cc7af-0003-001d-2bbf-f14fed000000',
'x-ms-request-id': '9ecd094d-0003-0002-22fa-4010d2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:08:46 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:14:01 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.queue.core.windows.net:80')
nock('http://yaxiatest.queue.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'fe8bd6f1-0003-0030-68bf-f1cc2d000000',
'x-ms-request-id': '89f37f41-0003-0003-6efa-4075ea000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:08:47 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:14:01 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.queue.core.windows.net:80')
nock('http://yaxiatest.queue.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /></StorageServiceProperties>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'f387a3f8-0003-0043-7fbf-f1bcee000000',
'x-ms-request-id': '72bd4050-0003-0004-21fa-404e43000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:09:18 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:14:31 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '170ea19d-0002-001b-74bf-f1b895000000',
'x-ms-request-id': '140148fc-0002-0000-69fa-40daa2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:09:17 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:14:32 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '461cc89f-0002-0007-6ebf-f16082000000',
'x-ms-request-id': 'e438b640-0002-0001-27fa-40bf9a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:09:17 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:14:33 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('http://yaxiatest.table.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Logging><Version>1.0</Version><Read>false</Read><Write>false</Write><Delete>false</Delete><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></Logging><HourMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></HourMetrics><MinuteMetrics><Version>1.0</Version><Enabled>false</Enabled><RetentionPolicy><Enabled>false</Enabled></RetentionPolicy></MinuteMetrics><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'dac7e896-0002-002e-1ebf-f116c0000000',
'x-ms-request-id': 'ee84e382-0002-0002-0ffa-4010d2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:09:48 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:15:04 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'd810b51e-001a-0042-80bf-f1bd13000000',
'x-ms-request-id': '83cf5ea0-001a-0003-1afa-4075ea000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:09:49 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:15:04 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.filteringRequestBody(function (path) { return '*';})
.put('/?comp=properties&restype=service', '*')
.reply(202, "", { 'transfer-encoding': 'chunked',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '2b5d7d61-001a-001a-13bf-f1b968000000',
'x-ms-request-id': '8603314f-001a-0002-06fa-4010d2000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:09:52 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:15:05 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.file.core.windows.net:80')
nock('http://yaxiatest.file.testch1.dnsdemo4.com:80')
.get('/?comp=properties&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceProperties><Cors /></StorageServiceProperties>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'd872e6e8-001a-0041-07bf-f1be14000000',
'x-ms-request-id': '8c820ce2-001a-0004-67fa-404e43000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:10:22 GMT',
connection: 'close' });
date: 'Thu, 05 Feb 2015 04:15:35 GMT' });
return result; }]];

Просмотреть файл

@ -1,43 +1,40 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=https;AccountName=xplat;AccountKey=null';
}
exports.scopes = [[function (nock) {
var result =
nock('http://xplat-secondary.blob.core.windows.net:80')
nock('https://xplat-secondary.blob.core.windows.net:443')
.get('/?comp=stats&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceStats><GeoReplication><Status>live</Status><LastSyncTime>Fri, 18 Sep 2015 03:06:49 GMT</LastSyncTime></GeoReplication></StorageServiceStats>", { 'transfer-encoding': 'chunked',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceStats><GeoReplication><Status>live</Status><LastSyncTime>Thu, 27 Nov 2014 13:47:15 GMT</LastSyncTime></GeoReplication></StorageServiceStats>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '8dd201da-0001-0020-4cbf-f19a7a000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:10:23 GMT',
connection: 'close' });
'x-ms-request-id': '8ba80b7c-0001-001e-165c-b334ad000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:50:10 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat-secondary.queue.core.windows.net:80')
nock('https://xplat-secondary.queue.core.windows.net:443')
.get('/?comp=stats&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceStats><GeoReplication><Status>live</Status><LastSyncTime>Fri, 18 Sep 2015 03:06:41 GMT</LastSyncTime></GeoReplication></StorageServiceStats>", { 'cache-control': 'no-cache',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceStats><GeoReplication><Status>live</Status><LastSyncTime>Thu, 27 Nov 2014 13:47:21 GMT</LastSyncTime></GeoReplication></StorageServiceStats>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '51aa5ce1-0003-0029-6bbf-f180f4000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:10:22 GMT',
connection: 'close' });
'x-ms-request-id': '919ab3bd-0003-003c-117e-00b50b000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:50:12 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat-secondary.table.core.windows.net:80')
nock('https://xplat-secondary.table.core.windows.net:443')
.get('/?comp=stats&restype=service')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceStats><GeoReplication><Status>live</Status><LastSyncTime>Fri, 18 Sep 2015 03:07:03 GMT</LastSyncTime></GeoReplication></StorageServiceStats>", { 'transfer-encoding': 'chunked',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><StorageServiceStats><GeoReplication><Status>live</Status><LastSyncTime>Thu, 27 Nov 2014 13:47:18 GMT</LastSyncTime></GeoReplication></StorageServiceStats>", { 'transfer-encoding': 'chunked',
'content-type': 'application/xml',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '23e902ab-0002-000a-0dbf-f1ef3f000000',
'x-ms-version': '2015-02-21',
date: 'Fri, 18 Sep 2015 03:10:23 GMT',
connection: 'close' });
'x-ms-request-id': 'd69b3d32-0002-0022-3221-8cc1bc000000',
'x-ms-version': '2014-02-14',
date: 'Thu, 27 Nov 2014 13:50:12 GMT' });
return result; }]];

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,337 +1,337 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=https;AccountName=xplat;AccountKey=null';
}
exports.scopes = [[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'tabledatatypetestdata0\')',
location: 'https://xplat.table.core.windows.net/Tables(\'tabledatatypetestdata0\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '46212f3d-0002-0007-0dc2-f16082000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'd052508a-0002-0043-5094-99ac2d000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'tabledatatypetestdata0\')',
date: 'Fri, 18 Sep 2015 03:28:10 GMT' });
dataserviceid: 'https://xplat.table.core.windows.net/Tables(\'tabledatatypetestdata0\')',
date: 'Wed, 26 Nov 2014 06:42:39 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.filteringRequestBody(function (path) { return '*';})
.post('/tabledatatypetestdata0', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
etag: 'W/"datetime\'2015-09-18T03%3A28%3A11.198793Z\'"',
location: 'http://xplat.table.core.windows.net/tabledatatypetestdata0(PartitionKey=\'1\',RowKey=\'3\')',
etag: 'W/"datetime\'2014-11-26T06%3A42%3A40.6767617Z\'"',
location: 'https://xplat.table.core.windows.net/tabledatatypetestdata0(PartitionKey=\'1\',RowKey=\'3\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'ae0f5104-0002-004c-68c2-f15118000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '226d3f53-0002-0019-775c-dcf786000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/tabledatatypetestdata0(PartitionKey=\'1\',RowKey=\'3\')',
date: 'Fri, 18 Sep 2015 03:28:11 GMT' });
dataserviceid: 'https://xplat.table.core.windows.net/tabledatatypetestdata0(PartitionKey=\'1\',RowKey=\'3\')',
date: 'Wed, 26 Nov 2014 06:42:40 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=StringValue%20eq%20%27mystring%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '90f58ba5-0002-003d-57c2-f12321000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '7b6693cc-0002-001e-1726-42deb0000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:11 GMT' });
date: 'Wed, 26 Nov 2014 06:42:40 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=StringValue%20eq%20%27mystring%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'e67ffb42-0002-002f-64c2-f1173d000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '50680ca7-0002-0044-6aa7-47d4ee000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:11 GMT' });
date: 'Wed, 26 Nov 2014 06:42:42 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=StringValue%20eq%20%27mystring%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '3d6ac310-0002-000b-12c2-f18e73000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '6a50b40c-0002-0042-2809-a853c3000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:11 GMT' });
date: 'Wed, 26 Nov 2014 06:42:42 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=DateValue%20eq%20datetime%272012-11-10T03%3A04%3A05.200Z%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '6a6a070b-0002-0038-17c2-f1d75e000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'b8998bd3-0002-0018-49a9-b3bc33000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:11 GMT' });
date: 'Wed, 26 Nov 2014 06:42:43 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=DateValue%20eq%20datetime%272012-11-10T03%3A04%3A05.200Z%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'fe0702b9-0002-0029-17c2-f1e045000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'e5a09fbc-0002-002a-2b9e-ad74f9000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:12 GMT' });
date: 'Wed, 26 Nov 2014 06:42:44 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=DateValue%20eq%20datetime%272012-11-10T03%3A04%3A05.200Z%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'dac8df35-0002-002e-4fc2-f116c0000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'c466b5f0-0002-0014-0c83-026787000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:12 GMT' });
date: 'Wed, 26 Nov 2014 06:42:44 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=BoolValue%20eq%20false')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '48656acb-0002-0033-4ec2-f1cf2a000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'a6656608-0002-003a-01bd-75b47b000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:12 GMT' });
date: 'Wed, 26 Nov 2014 06:42:45 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=BoolValue%20eq%20false')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '669044db-0002-000f-27c2-f17bf1000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '7327f1cc-0002-0038-281e-2de7f4000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:13 GMT' });
date: 'Wed, 26 Nov 2014 06:42:46 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=BoolValue%20eq%20false')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '43321610-0002-0015-2dc2-f1549e000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '900f33e2-0002-000e-75ba-9b481d000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:12 GMT' });
date: 'Wed, 26 Nov 2014 06:42:46 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=Int32Value%20eq%20123')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'f4ba63ac-0002-0042-07c2-f1bd13000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'ae9e76dd-0002-0034-6e01-001e93000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:13 GMT' });
date: 'Wed, 26 Nov 2014 06:42:47 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=Int32Value%20eq%20123')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '1194fbb6-0002-0047-6cc2-f1496c000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '5165315e-0002-000a-0b38-ad1b1e000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:14 GMT' });
date: 'Wed, 26 Nov 2014 06:42:49 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=Int32Value%20eq%20123')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'addbad6b-0002-0037-27c2-f13aa8000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '200cf4e0-0002-001c-2378-e356d3000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:14 GMT' });
date: 'Wed, 26 Nov 2014 06:42:49 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=DoubleValue%20eq%20123.45')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'fdce34c9-0002-0028-3fc2-f1e1b8000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '46f3d123-0002-0006-7f0b-89a490000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:14 GMT' });
date: 'Wed, 26 Nov 2014 06:42:50 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=DoubleValue%20eq%20123.45')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '7e7421a1-0002-001a-32c2-f1b968000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '86ed205d-0002-0004-1be8-f9aebc000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:14 GMT' });
date: 'Wed, 26 Nov 2014 06:42:51 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=DoubleValue%20eq%20123.45')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '7273562f-0002-0046-7ac2-f14891000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'c2cf55d0-0002-003e-010f-7227c9000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:15 GMT' });
date: 'Wed, 26 Nov 2014 06:42:51 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=Int64Value%20eq%204294967296L')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a865dfaa-0002-004b-35c2-f1a79d000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '1ac774fc-0002-003c-0989-9b7ca9000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:14 GMT' });
date: 'Wed, 26 Nov 2014 06:42:52 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=Int64Value%20eq%204294967296L')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '160982a8-0002-0014-52c2-f15563000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '0796578e-0002-0011-6330-62df7f000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:16 GMT' });
date: 'Wed, 26 Nov 2014 06:42:53 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=GuidValue%20eq%20guid%27debc44d5-04a9-42ea-ab2f-4e2cb49ff833%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '13691883-0002-0006-4ec2-f1617f000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'c7d3e775-0002-0037-73ba-1fde50000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:15 GMT' });
date: 'Wed, 26 Nov 2014 06:42:54 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=GuidValue%20eq%20guid%27debc44d5-04a9-42ea-ab2f-4e2cb49ff833%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'bc2f7bab-0002-001e-53c2-f14cea000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'd4f9dd84-0002-0049-64fb-dbde69000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:16 GMT' });
date: 'Wed, 26 Nov 2014 06:42:55 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=BinaryValue%20eq%20X%27010232%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a72c7390-0002-0023-5ac2-f1f9cc000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '1f7b8795-0002-000b-1e5d-017451000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:16 GMT' });
date: 'Wed, 26 Nov 2014 06:42:55 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tabledatatypetestdata0?%24filter=BinaryValue%20eq%20X%27010232%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2015-09-18T03:28:11.198793Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tabledatatypetestdata0\",\"value\":[{\"PartitionKey\":\"1\",\"RowKey\":\"3\",\"Timestamp\":\"2014-11-26T06:42:40.6767617Z\",\"Int32Value\":123,\"DoubleValue\":123.45,\"BoolValue\":false,\"StringValue\":\"mystring\",\"DateValue@odata.type\":\"Edm.DateTime\",\"DateValue\":\"2012-11-10T03:04:05.2Z\",\"GuidValue@odata.type\":\"Edm.Guid\",\"GuidValue\":\"debc44d5-04a9-42ea-ab2f-4e2cb49ff833\",\"Int64Value@odata.type\":\"Edm.Int64\",\"Int64Value\":\"4294967296\",\"BinaryValue@odata.type\":\"Edm.Binary\",\"BinaryValue\":\"AQIy\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '32540fba-0002-0000-12c2-f19607000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'f9a347b6-0002-0031-80a7-6bf008000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:16 GMT' });
date: 'Wed, 26 Nov 2014 06:42:56 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/Tables(%27tabledatatypetestdata0%27)')
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"http://xplat.table.core.windows.net/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>http://xplat.table.core.windows.net/Tables('tabledatatypetestdata0')</id><category term=\"xplat.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('tabledatatypetestdata0')\" /><title /><updated>2015-09-18T03:28:17Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>tabledatatypetestdata0</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
.reply(200, "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xml:base=\"https://xplat.table.core.windows.net/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:gml=\"http://www.opengis.net/gml\"><id>https://xplat.table.core.windows.net/Tables('tabledatatypetestdata0')</id><category term=\"xplat.Tables\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" /><link rel=\"edit\" title=\"Tables\" href=\"Tables('tabledatatypetestdata0')\" /><title /><updated>2014-11-26T06:42:57Z</updated><author><name /></author><content type=\"application/xml\"><m:properties><d:TableName>tabledatatypetestdata0</d:TableName></m:properties></content></entry>", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/atom+xml;type=entry;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a77521dd-0002-002d-0dc2-f115c7000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'a7292620-0002-001b-082d-a87f9a000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:16 GMT' });
date: 'Wed, 26 Nov 2014 06:42:57 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.delete('/Tables(%27tabledatatypetestdata0%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '93e7d313-0002-0032-4bc2-f1ced7000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '1dd84d91-0002-002d-16d7-0121bf000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:28:17 GMT' });
date: 'Wed, 26 Nov 2014 06:42:58 GMT' });
return result; }]];

Просмотреть файл

@ -1,149 +1,149 @@
// This file has been autogenerated.
exports.setEnvironment = function() {
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=xplat;AccountKey=null';
process.env['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=https;AccountName=xplat;AccountKey=null';
}
exports.scopes = [[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'tableservicetestdata0\')',
location: 'https://xplat.table.core.windows.net/Tables(\'tableservicetestdata0\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '94595b13-0002-0002-47c3-f194fd000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '2e2fde42-0002-001a-0ebb-1b15c8000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'tableservicetestdata0\')',
date: 'Fri, 18 Sep 2015 03:37:07 GMT' });
dataserviceid: 'https://xplat.table.core.windows.net/Tables(\'tableservicetestdata0\')',
date: 'Wed, 26 Nov 2014 07:22:52 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.filteringRequestBody(function (path) { return '*';})
.post('/tableservicetestdata0', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
etag: 'W/"datetime\'2015-09-18T03%3A37%3A08.6340143Z\'"',
location: 'http://xplat.table.core.windows.net/tableservicetestdata0(PartitionKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\',RowKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\')',
etag: 'W/"datetime\'2014-11-26T07%3A22%3A53.5399998Z\'"',
location: 'https://xplat.table.core.windows.net/tableservicetestdata0(PartitionKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\',RowKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'a77858f3-0002-002d-06c3-f115c7000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '525e58fa-0002-0023-29fb-a9b265000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/tableservicetestdata0(PartitionKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\',RowKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\')',
date: 'Fri, 18 Sep 2015 03:37:08 GMT' });
dataserviceid: 'https://xplat.table.core.windows.net/tableservicetestdata0(PartitionKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\',RowKey=\'%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9\')',
date: 'Wed, 26 Nov 2014 07:22:52 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tableservicetestdata0(PartitionKey=%27%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9%27,RowKey=%27%E2%92%88%E2%91%A0%E2%85%AB%E3%84%A8%E3%84%A9%27)')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tableservicetestdata0/@Element\",\"PartitionKey\":\"\\u2488\\u2460\\u216b\\u3128\\u3129\",\"RowKey\":\"\\u2488\\u2460\\u216b\\u3128\\u3129\",\"Timestamp\":\"2015-09-18T03:37:08.6340143Z\",\"Value\":\"test\"}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tableservicetestdata0/@Element\",\"PartitionKey\":\"\\u2488\\u2460\\u216b\\u3128\\u3129\",\"RowKey\":\"\\u2488\\u2460\\u216b\\u3128\\u3129\",\"Timestamp\":\"2014-11-26T07:22:53.5399998Z\",\"Value\":\"test\"}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
etag: 'W/"datetime\'2015-09-18T03%3A37%3A08.6340143Z\'"',
etag: 'W/"datetime\'2014-11-26T07%3A22%3A53.5399998Z\'"',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'b8b5c310-0002-0044-2ec3-f14a6b000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'a1d5d227-0002-0047-019d-0a5b96000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:37:08 GMT' });
date: 'Wed, 26 Nov 2014 07:22:53 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/Tables?%24filter=TableName%20ge%20%27tableservice%27%20and%20TableName%20lt%20%27tableservice%7B%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#Tables\",\"value\":[{\"TableName\":\"tableservicetestdata0\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#Tables\",\"value\":[{\"TableName\":\"tableservicetestdata0\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '3d6b271e-0002-000b-0ac3-f18e73000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'b2e31671-0002-0000-74f3-266a93000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:37:09 GMT' });
date: 'Wed, 26 Nov 2014 07:22:55 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.delete('/Tables(%27tableservicetestdata0%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '1d6ead07-0002-004a-5ac3-f1a660000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'baced8ff-0002-001d-2833-8bdbf9000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:37:09 GMT' });
date: 'Wed, 26 Nov 2014 07:22:55 GMT' });
return result; }],
[function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.filteringRequestBody(function (path) { return '*';})
.post('/Tables', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
location: 'http://xplat.table.core.windows.net/Tables(\'tableservicetestdata1\')',
location: 'https://xplat.table.core.windows.net/Tables(\'tableservicetestdata1\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'e8a58a42-0002-0011-4ec3-f1a11c000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '991ec4b1-0002-0025-3b86-c8557b000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/Tables(\'tableservicetestdata1\')',
date: 'Fri, 18 Sep 2015 03:37:09 GMT' });
dataserviceid: 'https://xplat.table.core.windows.net/Tables(\'tableservicetestdata1\')',
date: 'Wed, 26 Nov 2014 07:22:55 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.filteringRequestBody(function (path) { return '*';})
.post('/tableservicetestdata1', '*')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
etag: 'W/"datetime\'2015-09-18T03%3A37%3A10.4866497Z\'"',
location: 'http://xplat.table.core.windows.net/tableservicetestdata1(PartitionKey=\'part1\',RowKey=\'row1\')',
etag: 'W/"datetime\'2014-11-26T07%3A22%3A58.0010353Z\'"',
location: 'https://xplat.table.core.windows.net/tableservicetestdata1(PartitionKey=\'part1\',RowKey=\'row1\')',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'fe09aa58-0002-0029-0fc3-f1e045000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '50c8b1ef-0002-002f-697b-4e34af000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
'preference-applied': 'return-no-content',
dataserviceid: 'http://xplat.table.core.windows.net/tableservicetestdata1(PartitionKey=\'part1\',RowKey=\'row1\')',
date: 'Fri, 18 Sep 2015 03:37:10 GMT' });
dataserviceid: 'https://xplat.table.core.windows.net/tableservicetestdata1(PartitionKey=\'part1\',RowKey=\'row1\')',
date: 'Wed, 26 Nov 2014 07:22:57 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/tableservicetestdata1')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#tableservicetestdata1\",\"value\":[{\"PartitionKey\":\"part1\",\"RowKey\":\"row1\",\"Timestamp\":\"2015-09-18T03:37:10.4866497Z\",\"field\":\"my field\",\"otherfield\":\"my other field\",\"otherprops\":\"my properties\",\"gb18030\":\"\\ud846\\udf01\\ud843\\udedd\\ud864\\udcbb\\u8028\\u9b32, \\u345c\\u4291\\u34e3\\u47c9\\u42ee\\u4993, \\u1868\\u1825\\u1819\\u1870\\u1887\\u1818\\u1836, \\u0fcb\\u0f47\\u0fc2\\u0f7c\\u0f07\\u0f92, \\ua0cc\\ua217\\ua209\\ua2fd, Uighur, \\u1957\\u1969\\u196c\\u195c\\u1966 \"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#tableservicetestdata1\",\"value\":[{\"PartitionKey\":\"part1\",\"RowKey\":\"row1\",\"Timestamp\":\"2014-11-26T07:22:58.0010353Z\",\"field\":\"my field\",\"otherfield\":\"my other field\",\"otherprops\":\"my properties\",\"gb18030\":\"\\ud846\\udf01\\ud843\\udedd\\ud864\\udcbb\\u8028\\u9b32, \\u345c\\u4291\\u34e3\\u47c9\\u42ee\\u4993, \\u1868\\u1825\\u1819\\u1870\\u1887\\u1818\\u1836, \\u0fcb\\u0f47\\u0fc2\\u0f7c\\u0f07\\u0f92, \\ua0cc\\ua217\\ua209\\ua2fd, Uighur, \\u1957\\u1969\\u196c\\u195c\\u1966 \"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': 'f20e5ef5-0002-0040-0dc3-f1bfe9000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '769d2a21-0002-000f-314b-4b4ea8000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:37:10 GMT' });
date: 'Wed, 26 Nov 2014 07:22:57 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.get('/Tables?%24filter=TableName%20ge%20%27tableservice%27%20and%20TableName%20lt%20%27tableservice%7B%27')
.reply(200, "{\"odata.metadata\":\"http://xplat.table.core.windows.net/$metadata#Tables\",\"value\":[{\"TableName\":\"tableservicetestdata1\"}]}", { 'cache-control': 'no-cache',
.reply(200, "{\"odata.metadata\":\"https://xplat.table.core.windows.net/$metadata#Tables\",\"value\":[{\"TableName\":\"tableservicetestdata1\"}]}", { 'cache-control': 'no-cache',
'transfer-encoding': 'chunked',
'content-type': 'application/json;odata=minimalmetadata;streaming=true;charset=utf-8',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '02d85678-0002-0043-13c3-f1bcee000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': 'e836bb02-0002-0041-23b4-a6d48e000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:37:11 GMT' });
date: 'Wed, 26 Nov 2014 07:22:58 GMT' });
return result; },
function (nock) {
var result =
nock('http://xplat.table.core.windows.net:80')
nock('https://xplat.table.core.windows.net:443')
.delete('/Tables(%27tableservicetestdata1%27)')
.reply(204, "", { 'cache-control': 'no-cache',
'content-length': '0',
server: 'Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '72744145-0002-0046-46c3-f14891000000',
'x-ms-version': '2015-02-21',
'x-ms-request-id': '31c064a8-0002-000d-1e4c-72ce68000000',
'x-ms-version': '2014-02-14',
'x-content-type-options': 'nosniff',
date: 'Fri, 18 Sep 2015 03:37:11 GMT' });
date: 'Wed, 26 Nov 2014 07:23:00 GMT' });
return result; }]];

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -147,9 +147,45 @@ describe('BlobContainer', function () {
assert.equal(container2, null);
blobService.deleteContainer(containerName, function (deleteError) {
assert.equal(deleteError, null);
done();
});
assert.equal(deleteError, null);
done();
});
});
});
});
it('should work when the headers are set to string type', function (done) {
var containerName = suite.getName(containerNamesPrefix);
blobService.createContainer(containerName, function (createError, container1, createContainerResponse) {
assert.equal(createError, null);
assert.notEqual(container1, null);
if (container1) {
assert.notEqual(container1.name, null);
assert.notEqual(container1.etag, null);
assert.notEqual(container1.lastModified, null);
}
assert.equal(createContainerResponse.statusCode, HttpConstants.HttpResponseCodes.Created);
var callback = function(webresource) {
for (var headerName in webresource.headers) {
webresource.headers[headerName] = webresource.headers[headerName].toString();
}
};
blobService.on('sendingRequestEvent', callback);
// creating again will result in a duplicate error
blobService.createContainer(containerName, function (createError2, container2) {
assert.equal(createError2.code, Constants.BlobErrorCodeStrings.CONTAINER_ALREADY_EXISTS);
assert.equal(container2, null);
blobService.removeAllListeners('sendingRequestEvent');
blobService.deleteContainer(containerName, function (deleteError) {
assert.equal(deleteError, null);
done();
});
});
});
});

Просмотреть файл

@ -71,7 +71,7 @@ var appendBlobContentMD5 = '';
var appendBlob2KContentMD5 = '';
var uploadOptions = {
blockIdPrefix : blockIdPrefix
blockIdPrefix: blockIdPrefix
};
var suite = new TestSuite('blobservice-uploaddownload-tests');
@ -95,7 +95,7 @@ var generateTempFile = function (fileName, size, hasEmptyBlock, callback) {
var md5hash = crypto.createHash('md5');
var offset = 0;
var file = fs.openSync(fileName, 'w');
var saveContent= size <= blockSize;
var saveContent = size <= blockSize;
do {
var value = crypto.randomBytes(1);
@ -109,7 +109,7 @@ var generateTempFile = function (fileName, size, hasEmptyBlock, callback) {
} else {
buffer = crypto.randomBytes(writeSize);
}
fs.writeSync(file, buffer, 0, buffer.length, offset);
size -= buffer.length;
offset += buffer.length;
@ -118,12 +118,12 @@ var generateTempFile = function (fileName, size, hasEmptyBlock, callback) {
if (saveContent) {
fileInfo.content += buffer.toString();
}
} while(size > 0);
} while (size > 0);
fileInfo.contentMD5 = md5hash.digest('base64');
callback(fileInfo);
};
var getFileMD5 = function (fileName, callback) {
var md5hash = crypto.createHash('md5');
var blockSize = 4 * 1024 * 1024;
@ -142,13 +142,13 @@ var getFileMD5 = function (fileName, callback) {
md5hash.update(buffer.slice(0, bytesRead));
}
}
} while(bytesRead > 0);
} while (bytesRead > 0);
fileInfo.contentMD5 = md5hash.digest('base64');
callback(fileInfo);
};
var assertNoStalePropertyOnBlob = function(blob) {
var assertNoStalePropertyOnBlob = function (blob) {
assert.notEqual(blob, null);
assert.strictEqual(blob.leaseStatus, undefined);
assert.strictEqual(blob.leaseId, undefined);
@ -176,14 +176,14 @@ describe('blob-uploaddownload-tests', function () {
});
after(function (done) {
try { fs.unlinkSync(blockFileName); } catch (e) {}
try { fs.unlinkSync(pageFileName); } catch (e) {}
try { fs.unlinkSync(page2KFileName); } catch (e) {}
try { fs.unlinkSync(appendFileName); } catch (e) {}
try { fs.unlinkSync(append2KFileName); } catch (e) {}
try { fs.unlinkSync(notExistFileName); } catch (e) {}
try { fs.unlinkSync(zeroSizeFileName); } catch (e) {}
try { fs.unlinkSync(downloadName); } catch (e) {}
try { fs.unlinkSync(blockFileName); } catch (e) { }
try { fs.unlinkSync(pageFileName); } catch (e) { }
try { fs.unlinkSync(page2KFileName); } catch (e) { }
try { fs.unlinkSync(appendFileName); } catch (e) { }
try { fs.unlinkSync(append2KFileName); } catch (e) { }
try { fs.unlinkSync(notExistFileName); } catch (e) { }
try { fs.unlinkSync(zeroSizeFileName); } catch (e) { }
try { fs.unlinkSync(downloadName); } catch (e) { }
suite.teardownSuite(done);
});
@ -221,7 +221,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
// This test ensures that blocks can be created from files correctly
// and was created to ensure that the request module does not magically add
// a content type to the request when the user did not specify one.
@ -241,7 +241,7 @@ describe('blob-uploaddownload-tests', function () {
done();
});
});
describe('blob-piping-tests', function() {
runOrSkip('should be able to upload block blob from piped stream', function (done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
@ -251,7 +251,7 @@ describe('blob-uploaddownload-tests', function () {
// Write file so that it can be piped
fs.writeFileSync(fileNameTarget, blobBuffer);
// Pipe file to a blob
var stream = rfs.createReadStream(fileNameTarget).pipe(blobService.createWriteStreamToBlockBlob(containerName, blobName, { blockIdPrefix: 'block' }));
stream.on('close', function () {
@ -266,7 +266,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
runOrSkip('should be able to upload pageblob from piped stream', function (done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
var fileNameTarget = testutil.generateId('uploadPageBlobPiping', [], suite.isMocked) + '.test';
@ -441,7 +441,7 @@ describe('blob-uploaddownload-tests', function () {
stream.pipe(fs.createWriteStream(fileNameTarget));
});
});
describe('blob-rangedownload-tests', function() {
it('getBlobRange', function (done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
@ -591,7 +591,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
describe('CreateBlock', function() {
it('createBlockFromStream should work without useTransactionalMD5', function(done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
@ -701,7 +701,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
describe('AppendBlock', function() {
var appendText = 'stringappendtoblob';
@ -803,7 +803,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
describe('blob-MD5Validation-tests', function() {
runOrSkip('Upload/Download with MD5 validation should work', function (done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
@ -1353,8 +1353,8 @@ describe('blob-uploaddownload-tests', function () {
it('should work with contentMD5 in options', function(done) {
var options = {
blockIdPrefix : blockIdPrefix,
contentMD5 : blockBlobContentMD5
blockIdPrefix: blockIdPrefix,
contentMD5: blockBlobContentMD5
};
blobService.createBlockBlobFromStream(containerName, blockBlobName, stream, len, options, function (err) {
@ -1369,8 +1369,8 @@ describe('blob-uploaddownload-tests', function () {
it('should work with the speed summary in options', function(done) {
var speedSummary = new azure.BlobService.SpeedSummary();
var options = {
blockIdPrefix : blockIdPrefix,
speedSummary : speedSummary
blockIdPrefix: blockIdPrefix,
speedSummary: speedSummary
};
blobService.createBlockBlobFromStream(containerName, blockBlobName, stream, len, options, function (err) {
@ -1383,7 +1383,7 @@ describe('blob-uploaddownload-tests', function () {
});
it('should work with content type', function (done) {
var blobOptions = { contentType: 'text'};
var blobOptions = { contentType: 'text' };
blobService.createBlockBlobFromStream(containerName, blockBlobName, rfs.createReadStream(blockFileName), fileText.length, blobOptions, function (uploadError, blobResponse, uploadResponse) {
assert.equal(uploadError, null);
@ -1405,29 +1405,142 @@ describe('blob-uploaddownload-tests', function () {
});
});
runOrSkip('should work with parallelOperationsThreadCount in options', function(done) {
runOrSkip('should work with stream size (<= 32MB) which is a part of the read stream', function (done) {
var options = {
blockIdPrefix : blockIdPrefix,
parallelOperationThreadCount : 4
storeBlobContentMD5: false,
useTransactionalMD5: false
};
var buffer = new Buffer(30 * 1024 * 1024);
var buffer = new Buffer(15 * 1024 * 1024);
var tempBuffer = new Buffer(10);
var uploadLength = buffer.length + tempBuffer.length;
buffer.fill(1);
tempBuffer.fill(2);
var internalHash = crypto.createHash('md5');
internalHash.update(buffer);
internalHash.update(tempBuffer);
var expectedMD5 = internalHash.digest('base64');
var writeStream = fs.createWriteStream(blockFileName);
writeStream.write(buffer);
writeStream.write(buffer);
writeStream.write(buffer);
writeStream.write(buffer, function () {
buffer.fill(2);
writeStream.write(buffer, function () {
buffer.fill(3);
writeStream.write(buffer, function () {
writeStream.end();
});
});
});
writeStream.on('finish', function () {
var stream = rfs.createReadStream(blockFileName);
blobService.createBlockBlobFromStream(containerName, blockBlobName, stream, uploadLength, options, function (err) {
assert.equal(err, null);
blobService.getBlobProperties(containerName, blockBlobName, function (getBlobPropertiesErr, blobGetResponse) {
assert.equal(getBlobPropertiesErr, null);
assert.notEqual(blobGetResponse, null);
assert.equal(blobGetResponse.contentLength, uploadLength);
assert.equal(blobGetResponse.contentMD5, expectedMD5);
// Calculate the MD5 by the library
options.storeBlobContentMD5 = true;
options.useTransactionalMD5 = true;
stream = rfs.createReadStream(blockFileName);
blobService.createBlockBlobFromStream(containerName, blockBlobName+1, stream, uploadLength, options, function (err) {
assert.equal(err, null);
blobService.getBlobProperties(containerName, blockBlobName+1, function (getBlobPropertiesErr, blobGetResponse) {
assert.equal(getBlobPropertiesErr, null);
assert.notEqual(blobGetResponse, null);
assert.equal(blobGetResponse.contentLength, uploadLength);
assert.equal(blobGetResponse.contentMD5, expectedMD5);
done();
});
});
});
});
});
});
runOrSkip('should work with stream size (> 32MB) which is a part of the read stream', function (done) {
var options = {
storeBlobContentMD5: true,
useTransactionalMD5: true
};
var expectedMD5;
var buffer = new Buffer(20 * 1024 * 1024);
var tempBuffer = new Buffer(10);
var uploadLength = buffer.length * 2 + tempBuffer.length;
buffer.fill(1);
var internalHash = crypto.createHash('md5');
internalHash.update(buffer);
var writeStream = fs.createWriteStream(blockFileName);
writeStream.write(buffer, function () {
buffer.fill(2);
internalHash.update(buffer);
writeStream.write(buffer, function () {
buffer.fill(3);
tempBuffer.fill(3);
internalHash.update(tempBuffer);
expectedMD5 = internalHash.digest('base64');
writeStream.write(buffer, function () {
writeStream.end();
});
});
});
writeStream.on('finish', function () {
var stream = rfs.createReadStream(blockFileName);
blobService.createBlockBlobFromStream(containerName, blockBlobName, stream, uploadLength, options, function (err) {
assert.equal(err, null);
blobService.getBlobProperties(containerName, blockBlobName, function (getBlobPropertiesErr, blobGetResponse) {
assert.equal(getBlobPropertiesErr, null);
assert.notEqual(blobGetResponse, null);
assert.equal(blobGetResponse.contentLength, uploadLength);
assert.equal(blobGetResponse.contentMD5, expectedMD5);
var stream = rfs.createReadStream(blockFileName);
blobService.createBlockBlobFromStream(containerName, blockBlobName, stream, buffer.length * 3, options, function (err) {
assert.equal(err, null);
done();
});
});
});
});
blobService.getBlobProperties(containerName, blockBlobName, function (getBlobPropertiesErr, blobGetResponse) {
assert.equal(getBlobPropertiesErr, null);
assert.notEqual(blobGetResponse, null);
assert.equal(blobGetResponse.contentLength, buffer.length * 3);
runOrSkip('should work with parallelOperationsThreadCount in options', function (done) {
var options = {
blockIdPrefix: blockIdPrefix,
parallelOperationThreadCount: 4
};
var expectedMD5;
var buffer = new Buffer(25 * 1024 * 1024);
var uploadLength = buffer.length * 3;
buffer.fill(1);
var internalHash = crypto.createHash('md5');
internalHash.update(buffer);
var writeStream = fs.createWriteStream(blockFileName);
writeStream.write(buffer, function () {
buffer.fill(2);
internalHash.update(buffer);
writeStream.write(buffer, function () {
buffer.fill(3);
internalHash.update(buffer);
expectedMD5 = internalHash.digest('base64');
writeStream.write(buffer, function () {
writeStream.end();
});
});
});
done();
writeStream.on('finish', function () {
var stream = rfs.createReadStream(blockFileName);
blobService.createBlockBlobFromStream(containerName, blockBlobName, stream, uploadLength, options, function (err) {
assert.equal(err, null);
blobService.getBlobProperties(containerName, blockBlobName, function (getBlobPropertiesErr, blobGetResponse) {
assert.equal(getBlobPropertiesErr, null);
assert.notEqual(blobGetResponse, null);
assert.equal(blobGetResponse.contentLength, uploadLength);
assert.equal(blobGetResponse.contentMD5, expectedMD5);
done();
});
});
});
});
@ -1712,6 +1825,47 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
runOrSkip('should work with stream size which is a part of the read stream', function (done) {
var options = {
storeBlobContentMD5: true,
useTransactionalMD5: true
};
var buffer = new Buffer(15 * 1024 * 1024);
var tempBuffer = new Buffer(512);
var uploadLength = buffer.length + tempBuffer.length;
buffer.fill(1);
tempBuffer.fill(2);
var internalHash = crypto.createHash('md5');
internalHash.update(buffer);
internalHash.update(tempBuffer);
var expectedMD5 = internalHash.digest('base64');
var writeStream = fs.createWriteStream(pageFileName);
writeStream.write(buffer, function () {
buffer.fill(2);
writeStream.write(buffer, function () {
buffer.fill(3);
writeStream.write(buffer, function () {
writeStream.end();
});
});
});
writeStream.on('finish', function () {
var stream = rfs.createReadStream(pageFileName);
blobService.createPageBlobFromStream(containerName, pageBlobName, stream, uploadLength, options, function (err) {
assert.equal(err, null);
blobService.getBlobProperties(containerName, pageBlobName, function (getBlobPropertiesErr, blobGetResponse) {
assert.equal(getBlobPropertiesErr, null);
assert.notEqual(blobGetResponse, null);
assert.equal(blobGetResponse.contentLength, uploadLength);
assert.equal(blobGetResponse.contentMD5, expectedMD5);
done();
});
});
});
});
runOrSkip('should work with parallelOperationsThreadCount in options', function(done) {
var options = {
@ -1735,7 +1889,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
describe('createAppendBlobFromLocalFile', function () {
var zeroFileContentMD5;
before(function (done) {
@ -1900,7 +2054,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
describe('createAppendBlobFromStream', function () {
var len;
var stream;
@ -1997,6 +2151,47 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
runOrSkip('should work with stream size which is a part of the read stream', function (done) {
var options = {
storeBlobContentMD5: true,
useTransactionalMD5: true
};
var buffer = new Buffer(15 * 1024 * 1024);
var tempBuffer = new Buffer(512);
var uploadLength = buffer.length + tempBuffer.length;
buffer.fill(1);
tempBuffer.fill(2);
var internalHash = crypto.createHash('md5');
internalHash.update(buffer);
internalHash.update(tempBuffer);
var expectedMD5 = internalHash.digest('base64');
var writeStream = fs.createWriteStream(appendFileName);
writeStream.write(buffer, function () {
buffer.fill(2);
writeStream.write(buffer, function () {
buffer.fill(3);
writeStream.write(buffer, function () {
writeStream.end();
});
});
});
writeStream.on('finish', function () {
var stream = rfs.createReadStream(appendFileName);
blobService.createAppendBlobFromStream(containerName, appendBlobName, stream, uploadLength, options, function (err) {
assert.equal(err, null);
blobService.getBlobProperties(containerName, appendBlobName, function (getBlobPropertiesErr, blobGetResponse) {
assert.equal(getBlobPropertiesErr, null);
assert.notEqual(blobGetResponse, null);
assert.equal(blobGetResponse.contentLength, uploadLength);
assert.equal(blobGetResponse.contentMD5, expectedMD5);
done();
});
});
});
});
runOrSkip('should download a range of append blob to stream', function (done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
@ -2024,7 +2219,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
describe('createAppendBlobFromText', function () {
it('should work for small size from text', function (done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked) + ' a';
@ -2094,7 +2289,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
describe('AppendFromLocalFile', function () {
describe('appendFromLocalFile', function () {
afterEach(function (done) {
blobService.deleteBlobIfExists(containerName, appendBlobName, function (error) {
done();
@ -2112,11 +2307,11 @@ describe('blob-uploaddownload-tests', function () {
assert.equal(blob.committedBlockCount, 1);
assertNoStalePropertyOnBlob(blob);
blobService.AppendFromLocalFile(containerName, appendBlobName, appendFileName, function (err, blob) {
blobService.appendFromLocalFile(containerName, appendBlobName, appendFileName, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 2);
blobService.AppendFromLocalFile(containerName, appendBlobName, appendFileName, function (err, blob) {
blobService.appendFromLocalFile(containerName, appendBlobName, appendFileName, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 3);
@ -2131,7 +2326,7 @@ describe('blob-uploaddownload-tests', function () {
});
});
describe('AppendFromStream', function () {
describe('appendFromStream', function () {
afterEach(function (done) {
blobService.deleteBlobIfExists(containerName, appendBlobName, function (error) {
done();
@ -2154,7 +2349,7 @@ describe('blob-uploaddownload-tests', function () {
var text1 = appendBlobBuffer.toString();
var stream1 = rfs.createReadStream(appendFileName);
blobService.AppendFromStream(containerName, appendBlobName, stream1, text.length, function (err, blob) {
blobService.appendFromStream(containerName, appendBlobName, stream1, text.length, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 2);
@ -2163,7 +2358,7 @@ describe('blob-uploaddownload-tests', function () {
var text2 = appendBlobBuffer.toString();
var stream2 = rfs.createReadStream(appendFileName);
blobService.AppendFromStream(containerName, appendBlobName, stream2, text.length, function (err, blob) {
blobService.appendFromStream(containerName, appendBlobName, stream2, text.length, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 3);
@ -2176,9 +2371,50 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
it('should append from stream with stream length is part of the stream', function (done) {
appendBlobBuffer.fill(1);
writeFile(appendFileName, appendBlobBuffer);
var text = appendBlobBuffer.toString();
blobService.createAppendBlobFromLocalFile(containerName, appendBlobName, appendFileName, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.appendOffset, 0);
assert.equal(blob.committedBlockCount, 1);
assertNoStalePropertyOnBlob(blob);
appendBlobBuffer.fill(2);
writeFile(appendFileName, appendBlobBuffer);
var text1 = appendBlobBuffer.toString().substring(0, appendBlobBuffer.length - 10);
var stream1 = rfs.createReadStream(appendFileName);
var appendLength1 = text1.length;
blobService.appendFromStream(containerName, appendBlobName, stream1, appendLength1, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 2);
appendBlobBuffer.fill(3);
writeFile(appendFileName, appendBlobBuffer);
var text2 = appendBlobBuffer.toString().substring(0, appendBlobBuffer.length - 20);
var stream2 = rfs.createReadStream(appendFileName);
var appendLength2 = text2.length;
blobService.appendFromStream(containerName, appendBlobName, stream2, appendLength2, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 3);
blobService.getBlobToText(containerName, appendBlobName, function (downloadErr, blobTextResponse) {
assert.equal(downloadErr, null);
assert.equal(blobTextResponse, text + text1 + text2);
done();
});
});
});
});
});
});
describe('AppendFromText', function () {
describe('appendFromText', function () {
afterEach(function (done) {
blobService.deleteBlobIfExists(containerName, appendBlobName, function (error) {
done();
@ -2198,11 +2434,11 @@ describe('blob-uploaddownload-tests', function () {
var text1 = 'redblack';
var text2 = 'yellowblue';
blobService.AppendFromText(containerName, appendBlobName, text1, function (err, blob) {
blobService.appendFromText(containerName, appendBlobName, text1, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 2);
blobService.AppendFromText(containerName, appendBlobName, text2, function (err, blob) {
blobService.appendFromText(containerName, appendBlobName, text2, function (err, blob) {
assert.equal(err, null);
assert.equal(blob.committedBlockCount, 3);
@ -2309,6 +2545,69 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
it('should skip the size check', function(done) {
blockBlobContentMD5 = writeFile(blockFileName, fileText);
blobService.createBlockBlobFromLocalFile(containerName, blockBlobName, blockFileName, uploadOptions, function (err) {
assert.equal(err, null);
var options = {disableContentMD5Validation : false};
var elapsed1 = new Date().valueOf();
blobService.getBlobToLocalFile(containerName, blockBlobName, downloadName, options, function(err, blob) {
elapsed1 = new Date().valueOf() - elapsed1;
assert.equal(err, null);
assert.equal(blob.contentMD5, blockBlobContentMD5);
var exists = azureutil.pathExistsSync(downloadName);
assert.equal(exists, true);
fs.readFile(downloadName, function (err, text) {
assert.equal(text, fileText);
var elapsed2 = new Date().valueOf();
options.skipSizeCheck = true;
blobService.getBlobToLocalFile(containerName, blockBlobName, downloadName, options, function(err, blob) {
elapsed2 = new Date().valueOf() - elapsed2;
assert.ok(suite.isMocked ? true : elapsed1 > elapsed2);
assert.equal(err, null);
assert.equal(blob.contentMD5, blockBlobContentMD5);
var exists = azureutil.pathExistsSync(downloadName);
assert.equal(exists, true);
fs.readFile(downloadName, function (err, text) {
assert.equal(text, fileText);
done();
});
});
});
});
});
});
it('should download a block blob to a local file in chunks', function (done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
var fileNameSource = testutil.generateId('getBlockBlobRangeStreamLocal', [], suite.isMocked) + '.test';
var buffer = new Buffer(4 * 1024 * 1024 + 512); // Don't be a multiple of 4MB to cover more scenarios
var originLimit = blobService.singleBlobPutThresholdInBytes;
buffer.fill(0);
writeFile(fileNameSource, buffer);
blobService.singleBlobPutThresholdInBytes = 1024 * 1024;
blobService.createBlockBlobFromLocalFile(containerName, blobName, fileNameSource, uploadOptions, function (error) {
try { fs.unlinkSync(fileNameSource); } catch (e) { }
assert.equal(error, null);
var downloadOptions = { parallelOperationThreadCount : 2 };
var downloadedFileName = testutil.generateId('getBlockBlobRangeStream', [], suite.isMocked) + '.test';
blobService.getBlobToLocalFile(containerName, blobName, downloadedFileName, downloadOptions, function (error) {
try { fs.unlinkSync(downloadedFileName); } catch (e) { }
assert.equal(error, null);
blobService.singleBlobPutThresholdInBytes = originLimit;
done();
});
});
});
});
describe('getPageBlobToFile', function() {
@ -2355,4 +2654,99 @@ describe('blob-uploaddownload-tests', function () {
});
});
});
describe('createWriteStreamToBlob', function() {
it('should work with basic stream for block blob', function(done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
var fileNameTarget = testutil.generateId('createWriteStreamToBlockBlob', [], suite.isMocked) + '.blocktest';
var blobBuffer = new Buffer(99);
blobBuffer.fill(1);
// Write file so that it can be piped
fs.writeFileSync(fileNameTarget, blobBuffer);
// Pipe file to a blob
var stream = rfs.createReadStream(fileNameTarget).pipe(blobService.createWriteStreamToBlockBlob(containerName, blobName, { blockIdPrefix: 'block' }));
stream.on('close', function () {
blobService.getBlobToText(containerName, blobName, function (err, text) {
assert.equal(err, null);
assert.equal(text, blobBuffer);
try { fs.unlinkSync(fileNameTarget); } catch (e) {}
done();
});
});
});
it('should throw error with basic stream for page blob when the length is not a multiple of 512', function(done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
var fileNameTarget = testutil.generateId('createWriteStreamToPageBlob', [], suite.isMocked) + '.pagetest';
var length = 99;
var blobBuffer = new Buffer(length);
blobBuffer.fill('b');
// Write file so that it can be piped
fs.writeFileSync(fileNameTarget, blobBuffer);
// Pipe file to a blob
assert.throws(function() {
rfs.createReadStream(fileNameTarget).pipe(blobService.createWriteStreamToNewPageBlob(containerName, blobName, length));
}, 'Page blob length must be multiple of 512');
done();
});
it('should work with basic stream for page blob', function(done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
var fileNameTarget = testutil.generateId('createWriteStreamToPageBlob', [], suite.isMocked) + '.pagetest';
var length = 2 * 1024 * 1024;
var blobBuffer = new Buffer(length);
blobBuffer.fill('a');
pageBlobContentMD5 = writeFile(fileNameTarget, blobBuffer);
var readable = rfs.createReadStream(fileNameTarget);
var stream = blobService.createWriteStreamToNewPageBlob(containerName, blobName, length, {storeBlobContentMD5: true});
readable.pipe(stream);
stream.on('close', function () {
blobService.getBlobToText(containerName, blobName, function (err, text) {
assert.equal(err, null);
assert.equal(text, blobBuffer);
try { fs.unlinkSync(fileNameTarget); } catch (e) {}
done();
});
});
});
it('should work with basic stream for append blob', function(done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
var fileNameTarget = testutil.generateId('createWriteStreamToAppendBlob', [], suite.isMocked) + '.appendtest';
var length = 2 * 1024 * 1024;
var blobBuffer = new Buffer(length);
blobBuffer.fill('a');
pageBlobContentMD5 = writeFile(fileNameTarget, blobBuffer);
var readable = rfs.createReadStream(fileNameTarget);
var stream = blobService.createWriteStreamToNewAppendBlob(containerName, blobName, length);
readable.pipe(stream);
stream.on('close', function () {
blobService.getBlobToText(containerName, blobName, function (err, text) {
assert.equal(err, null);
assert.equal(text, blobBuffer);
try { fs.unlinkSync(fileNameTarget); } catch (e) {}
done();
});
});
});
it('should work with string for block blob', function(done) {
var blobName = testutil.generateId(blobNamesPrefix, blobNames, suite.isMocked);
var content = 'plainstring';
var stream = blobService.createWriteStreamToBlockBlob(containerName, blobName, { blockIdPrefix: 'block' });
stream.write(content, 'utf-8');
stream.end();
stream.on('finish', function () {
blobService.getBlobToText(containerName, blobName, function (err, text) {
blobService.logger.level = azure.Logger.LogLevels.INFO;
assert.equal(err, null);
assert.equal(text, content);
done();
});
});
});
});
});

Просмотреть файл

@ -556,4 +556,4 @@ describe('FileDirectory', function () {
});
});
});
});
});

Просмотреть файл

@ -943,4 +943,4 @@ describe('File', function () {
});
});
});
});
});

Просмотреть файл

@ -159,4 +159,4 @@ describe('FileUploadDownloadScale', function () {
fileInfo.contentMD5 = md5hash.digest('base64');
callback(null, fileInfo);
}
});
});

Просмотреть файл

@ -572,14 +572,14 @@ describe('FileShare', function () {
var sharePolicy = {
AccessPolicy: {
Permissions: 'rw',
Expiry: new Date('2015-10-01')
Expiry: new Date('2016-10-01')
}
};
var filePolicy = {
AccessPolicy: {
Permissions: 'd',
Expiry: new Date('2015-10-10')
Expiry: new Date('2016-10-10')
}
};

Просмотреть файл

@ -107,7 +107,7 @@ describe('FileUploadDownload', function () {
});
after(function (done) {
try { fs.unlinkSync(localFileName); } catch (e) {}
try { fs.unlinkSync(localFileName); } catch (e) {}
try { fs.unlinkSync(notExistFileName); } catch (e) {}
try { fs.unlinkSync(zeroSizeFileName); } catch (e) {}
try { fs.unlinkSync(downloadFileName); } catch (e) {}
@ -206,8 +206,8 @@ describe('FileUploadDownload', function () {
});
it('should emit error events', function (done) {
var fileText = "Hello, world!"
writeFile(localFileName, fileText);
var fileText = "Hello, world!"
writeFile(localFileName, fileText);
var stream = fileService.createWriteStreamToExistingFile(shareName, directoryName, fileName);
stream.on('error', function (error) {
@ -223,8 +223,8 @@ describe('FileUploadDownload', function () {
describe('createReadStream', function() {
runOrSkip('download file', function (done) {
var sourceFileNameTarget = testutil.generateId('getFileSourceFile', [], false) + '.test';
var destinationFileNameTarget = testutil.generateId('getFileDestinationFile', [], false) + '.test';
var sourceFileNameTarget = testutil.generateId('getFileSourceFile', [], suite.isMocked) + '.test';
var destinationFileNameTarget = testutil.generateId('getFileDestinationFile', [], suite.isMocked) + '.test';
var fileBuffer = new Buffer( 5 * 1024 );
fileBuffer.fill(1);
@ -232,9 +232,9 @@ describe('FileUploadDownload', function () {
fs.writeFileSync(sourceFileNameTarget, fileBuffer);
fileService.createFileFromStream(shareName, directoryName, fileName, rfs.createReadStream(sourceFileNameTarget), 5 * 1024, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
var writable = fs.createWriteStream(destinationFileNameTarget);
fileService.createReadStream(shareName, directoryName, fileName).pipe(writable);
@ -309,35 +309,35 @@ describe('FileUploadDownload', function () {
});
});
describe('createRangesFromStream', function() {
describe('createRangesFromStream', function() {
it('should work', function (done) {
var fileText = "createRangesFromStreamText";
var fileMD5 = writeFile(localFileName, fileText);
var fileText = "createRangesFromStreamText";
var fileMD5 = writeFile(localFileName, fileText);
fileService.createFile(shareName, directoryName, fileName, fileText.length + 5, function (err) {
fileService.createFile(shareName, directoryName, fileName, fileText.length + 5, function (err) {
assert.equal(err, null);
var stream = rfs.createReadStream(localFileName);
fileService.createRangesFromStream(shareName, directoryName, fileName, stream, 5, 5 + fileText.length - 1, function(err2) {
assert.equal(err2, null);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, '\u0000\u0000\u0000\u0000\u0000' + fileText);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, '\u0000\u0000\u0000\u0000\u0000' + fileText);
done();
done();
});
});
});
});
});
it('should work with transactional MD5', function (done) {
var fileText = "createRangesFromStreamText";
var fileMD5 = writeFile(localFileName, fileText);
var fileText = "createRangesFromStreamText";
var fileMD5 = writeFile(localFileName, fileText);
fileService.createFile(shareName, directoryName, fileName, fileText.length, function (err) {
fileService.createFile(shareName, directoryName, fileName, fileText.length, function (err) {
assert.equal(err, null);
var callback = function (webresource) {
@ -350,23 +350,23 @@ describe('FileUploadDownload', function () {
assert.equal(err2, null);
fileService.removeAllListeners('sendingRequestEvent');
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
done();
});
done();
});
});
});
});
});
it('should work with MD5', function (done) {
var fileText = "createRangesFromStreamText";
var fileMD5 = writeFile(localFileName, fileText);
fileService.createFile(shareName, directoryName, fileName, fileText.length, function (err) {
var fileText = "createRangesFromStreamText";
var fileMD5 = writeFile(localFileName, fileText);
fileService.createFile(shareName, directoryName, fileName, fileText.length, function (err) {
assert.equal(err, null);
var callback = function (webresource) {
@ -379,44 +379,44 @@ describe('FileUploadDownload', function () {
assert.equal(err2, null);
fileService.removeAllListeners('sendingRequestEvent');
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
done();
});
done();
});
});
});
});
});
});
describe('clearRange', function() {
describe('clearRange', function() {
it('should work', function (done) {
var buffer = new Buffer(512);
buffer.fill(0);
buffer[0] = '1';
writeFile(localFileName, buffer);
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
assert.equal(err, null);
fileService.createRangesFromStream(shareName, directoryName, fileName, rfs.createReadStream(localFileName), 512, 512 + buffer.length - 1, function(err2) {
assert.equal(err2, null);
fileService.clearRange(shareName, directoryName, fileName, 512, 512 + buffer.length - 1, function (err) {
assert.equal(err, null);
fileService.clearRange(shareName, directoryName, fileName, 512, 512 + buffer.length - 1, function (err) {
assert.equal(err, null);
fileService.listRanges(shareName, directoryName, fileName, function (error, ranges) {
assert.equal(error, null);
assert.notEqual(ranges, null);
assert.equal(ranges.length, 0);
fileService.listRanges(shareName, directoryName, fileName, function (error, ranges) {
assert.equal(error, null);
assert.notEqual(ranges, null);
assert.equal(ranges.length, 0);
done();
});
});
});
done();
});
});
});
});
});
@ -426,59 +426,59 @@ describe('FileUploadDownload', function () {
buffer[0] = '1';
writeFile(localFileName, buffer);
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
assert.equal(err, null);
fileService.createRangesFromStream(shareName, directoryName, fileName, rfs.createReadStream(localFileName), 0, buffer.length - 1, function(err2) {
assert.equal(err2, null);
fileService.createRangesFromStream(shareName, directoryName, fileName, rfs.createReadStream(localFileName), 0, buffer.length - 1, function(err2) {
assert.equal(err2, null);
fileService.clearRange(shareName, directoryName, fileName, 512, 1023, function (err) {
assert.equal(err, null);
fileService.clearRange(shareName, directoryName, fileName, 512, 1023, function (err) {
assert.equal(err, null);
fileService.listRanges(shareName, directoryName, fileName, function (error, ranges) {
assert.equal(error, null);
assert.notEqual(ranges, null);
assert.equal(ranges.length, 1);
fileService.listRanges(shareName, directoryName, fileName, function (error, ranges) {
assert.equal(error, null);
assert.notEqual(ranges, null);
assert.equal(ranges.length, 1);
assert.equal(ranges[0].start, 0);
assert.equal(ranges[0].end, 511);
done();
});
});
});
done();
});
});
});
});
});
});
});
describe('listRanges', function() {
describe('listRanges', function() {
it('should work', function (done) {
var buffer = new Buffer(512);
buffer.fill(0);
buffer[0] = '1';
writeFile(localFileName, buffer);
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
assert.equal(err, null);
fileService.createRangesFromStream(shareName, directoryName, fileName, rfs.createReadStream(localFileName), 0, buffer.length - 1, function(err2) {
assert.equal(err2, null);
fileService.createRangesFromStream(shareName, directoryName, fileName, rfs.createReadStream(localFileName), 0, buffer.length - 1, function(err2) {
assert.equal(err2, null);
// Only one range present
fileService.listRanges(shareName, directoryName, fileName, function (error, ranges) {
assert.equal(error, null);
assert.notEqual(ranges, null);
assert.equal(ranges.length, 1);
assert.equal(ranges[0].start, 0);
assert.equal(ranges[0].end, buffer.length - 1);
// Only one range present
fileService.listRanges(shareName, directoryName, fileName, function (error, ranges) {
assert.equal(error, null);
assert.notEqual(ranges, null);
assert.equal(ranges.length, 1);
assert.equal(ranges[0].start, 0);
assert.equal(ranges[0].end, buffer.length - 1);
done();
});
});
done();
});
});
});
});
it('empty file', function (done) {
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
fileService.createFile(shareName, directoryName, fileName, 1024 * 1024 * 1024, function (err) {
assert.equal(err, null);
// Only one range present
@ -488,7 +488,7 @@ describe('FileUploadDownload', function () {
assert.equal(ranges.length, 0);
done();
});
});
});
});
@ -525,8 +525,8 @@ describe('FileUploadDownload', function () {
});
});
describe('GetFileToFile', function() {
var fileText = "Hello world!";
describe('getFileToLocalFile', function() {
var fileText = "Hello world!";
it('should work with basic file', function(done) {
writeFile(localFileName, fileText);
@ -549,6 +549,49 @@ describe('FileUploadDownload', function () {
});
});
});
it('should skip the size check', function(done) {
writeFile(localFileName, fileText);
fileService.createFileFromLocalFile(shareName, directoryName, fileName, localFileName, function (err) {
assert.equal(err, null);
var elapsed1 = new Date().valueOf();
fileService.getFileToLocalFile(shareName, directoryName, fileName, downloadFileName, function (err, file) {
elapsed1 = new Date().valueOf() - elapsed1;
assert.equal(err, null);
assert.ok(file);
assert.equal(file.share, shareName);
assert.equal(file.directory, directoryName);
assert.equal(file.name, fileName);
var exists = azureutil.pathExistsSync(downloadFileName);
assert.equal(exists, true);
fs.readFile(downloadFileName, function (err, text) {
assert.equal(text, fileText);
var elapsed2 = new Date().valueOf();
var options = { skipSizeCheck: true };
fileService.getFileToLocalFile(shareName, directoryName, fileName, downloadFileName, options, function (err, file) {
elapsed2 = new Date().valueOf() - elapsed2;
assert.ok(suite.isMocked ? true : elapsed1 > elapsed2);
assert.equal(err, null);
assert.ok(file);
assert.equal(file.share, shareName);
assert.equal(file.directory, directoryName);
assert.equal(file.name, fileName);
var exists = azureutil.pathExistsSync(downloadFileName);
assert.equal(exists, true);
fs.readFile(downloadFileName, function (err, text) {
assert.equal(text, fileText);
done();
});
});
});
});
});
});
runOrSkip('should work with file range', function(done) {
var size = 99*1024*1024; // Do not use a multiple of 4MB size
@ -590,12 +633,30 @@ describe('FileUploadDownload', function () {
});
});
});
it('should download a file to a local file in chunks', function (done) {
var buffer = new Buffer(4 * 1024 * 1024 + 512); // Don't be a multiple of 4MB to cover more scenarios
var originLimit = fileService.singleFileThresholdInBytes;
buffer.fill(0);
writeFile(localFileName, buffer);
fileService.singleFileThresholdInBytes = 1024 * 1024;
fileService.createFileFromLocalFile(shareName, directoryName, fileName, localFileName, function (error) {
assert.equal(error, null);
var downloadOptions = { parallelOperationThreadCount : 2 };
fileService.getFileToLocalFile(shareName, directoryName, fileName, downloadFileName, downloadOptions, function (err, file) {
assert.equal(error, null);
fileService.singleFileThresholdInBytes = originLimit;
done();
});
});
});
});
describe('GetFileToStream', function() {
describe('getFileToStream', function() {
var fileText = "Hello world!";
it('getFileToStream', function (done) {
it('should work with basic stream', function (done) {
fileContentMD5 = writeFile(localFileName, fileText);
var stream = rfs.createReadStream(localFileName);
fileService.createFileFromStream(shareName, directoryName, fileName, stream, fileText.length, function (uploadError, file, uploadResponse) {
@ -621,8 +682,56 @@ describe('FileUploadDownload', function () {
});
});
});
it('should skip the size check', function (done) {
fileContentMD5 = writeFile(localFileName, fileText);
var stream = rfs.createReadStream(localFileName);
fileService.createFileFromStream(shareName, directoryName, fileName, stream, fileText.length, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
var elapsed1 = new Date().valueOf();
fileService.getFileToStream(shareName, directoryName, fileName, fs.createWriteStream(downloadFileName), function (downloadErr, file, downloadResponse) {
elapsed1 = new Date().valueOf() - elapsed1;
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(file.share, shareName);
assert.equal(file.directory, directoryName);
assert.equal(file.name, fileName);
runOrSkip('getFileToStream with range', function (done) {
var exists = azureutil.pathExistsSync(downloadFileName);
assert.equal(exists, true);
fs.readFile(downloadFileName, function (err, text) {
assert.equal(text, fileText);
var elapsed2 = new Date().valueOf();
var options = { skipSizeCheck: true };
fileService.getFileToStream(shareName, directoryName, fileName, fs.createWriteStream(downloadFileName), options, function (downloadErr, file, downloadResponse) {
elapsed2 = new Date().valueOf() - elapsed2;
assert.ok(suite.isMocked ? true : elapsed1 > elapsed2);
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(file.share, shareName);
assert.equal(file.directory, directoryName);
assert.equal(file.name, fileName);
var exists = azureutil.pathExistsSync(downloadFileName);
assert.equal(exists, true);
fs.readFile(downloadFileName, function (err, text) {
assert.equal(text, fileText);
done();
});
});
});
});
});
});
runOrSkip('should work with range', function (done) {
var size = 99*1024*1024; // Do not use a multiple of 4MB size
var rangeStart = 100;
var rangeEnd = size - 200;
@ -655,16 +764,16 @@ describe('FileUploadDownload', function () {
fileContentMD5 = writeFile(localFileName, fileText);
var stream = rfs.createReadStream(localFileName);
fileService.createFileFromStream(shareName, directoryName, fileName, stream, fileText.length, {storeFileContentMD5: true}, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
var options = {disableContentMD5Validation : false};
fileService.getFileToStream(shareName, directoryName, fileName, fs.createWriteStream(downloadFileName), options, function(downloadErr, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(file.contentMD5, fileContentMD5);
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(file.contentMD5, fileContentMD5);
var exists = azureutil.pathExistsSync(downloadFileName);
assert.equal(exists, true);
@ -678,8 +787,8 @@ describe('FileUploadDownload', function () {
});
});
describe('CreateFileFromText', function () {
it('shouldWork', function (done) {
describe('createFileFromText', function () {
it('should work with basic text', function (done) {
var fileText = 'Hello World';
fileService.createFileFromText(shareName, directoryName, fileName, fileText, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
@ -698,89 +807,92 @@ describe('FileUploadDownload', function () {
done();
});
});
});
});
it('strangeChars1', function (done) {
fileName = 'def@#abefdef& &abcde+=-';
it('should work with strange chars(ASCII)', function (done) {
fileName = 'def@#abefdef& &abcde+=-';
var fileText = 'def@#/abef?def/& &/abcde+=-';
fileService.createFileFromText(shareName, directoryName, fileName, fileText, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
var fileText = 'def@#/abef?def/& &/abcde+=-';
fileService.createFileFromText(shareName, directoryName, fileName, fileText, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
done();
});
});
});
done();
});
});
});
it('strangeChars2', function (done) {
fileName = '\u2488\u2460\u216B\u3128\u3129'.toString('GB18030');
it('should work with stange chars(GB18030)', function (done) {
fileName = '\u2488\u2460\u216B\u3128\u3129'.toString('GB18030');
var fileText = '\u2488\u2460\u216B\u3128\u3129'.toString('GB18030');
fileService.createFileFromText(shareName, directoryName, fileName, fileText, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
var fileText = '\u2488\u2460\u216B\u3128\u3129'.toString('GB18030');
fileService.createFileFromText(shareName, directoryName, fileName, fileText, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
done();
});
});
});
done();
});
});
});
it('withBuffer', function (done) {
var fileText = new Buffer('Hello World');
fileService.createFileFromText(shareName, directoryName, fileName, fileText, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
it('should work with buffer', function (done) {
var fileText = new Buffer('Hello World');
fileService.createFileFromText(shareName, directoryName, fileName, fileText, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.ok(file);
assert.ok(uploadResponse.isSuccessful);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, text, file, downloadResponse) {
assert.equal(downloadErr, null);
assert.ok(downloadResponse.isSuccessful);
assert.ok(file);
assert.equal(text, fileText);
done();
});
});
});
done();
});
});
});
/*it('should work with storeFileContentMD5', function (done) {
var fileName = testutil.generateId(fileNamesPrefix, fileNames, false) + ' a';
it('should work with storeFileContentMD5', function (done) {
var fileName = testutil.generateId(fileNamesPrefix, fileName, suite.isMocked) + ' a';
var fileText = 'Hello World';
var fileMD5 = azureutil.getContentMd5(fileText);
fileService.createFileFromText(shareName, directoryName, fileName, fileText, {storeFileContentMD5: true, contentMD5: fileMD5}, function (uploadError, file, uploadResponse) {
assert.equal(uploadError, null);
assert.notEqual(file, null);
assert.equal(file.contentMD5, fileMD5);
assert.ok(uploadResponse.isSuccessful);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, fileTextResponse) {
assert.equal(downloadErr, null);
assert.equal(fileTextResponse, fileText);
done();
fileService.getFileProperties(shareName, directoryName, fileName, function (getPropError, properties) {
assert.equal(getPropError, null);
assert.equal(properties.contentMD5, fileMD5);
fileService.getFileToText(shareName, directoryName, fileName, function (downloadErr, fileTextResponse) {
assert.equal(downloadErr, null);
assert.equal(fileTextResponse, fileText);
done();
});
});
});
});*/
});
});
});
describe('CreateFileFromFile', function() {
var fileText = 'Hello World!';
describe('createFileFromFile', function() {
var fileText = 'Hello World!';
var zeroFileContentMD5;
var fileContentMD5;
before(function (done) {
@ -907,8 +1019,8 @@ describe('FileUploadDownload', function () {
});
});
describe('CreateFileFromStream', function() {
var fileText = 'Hello World!';
describe('createFileFromStream', function() {
var fileText = 'Hello World!';
var zeroFileContentMD5;
var fileContentMD5;
var len;
@ -1028,7 +1140,7 @@ describe('FileUploadDownload', function () {
});
});
describe('MD5Validation', function() {
describe('MD5Validation', function() {
var callback = function (webresource) {
if (webresource.headers[HeaderConstants.CONTENT_LENGTH]) {
assert.notEqual(webresource.headers[HeaderConstants.CONTENT_MD5], null);
@ -1114,7 +1226,7 @@ describe('FileUploadDownload', function () {
fileService.getFileProperties(shareName, directoryName, fileName, function (getFilePropertiesErr, blob) {
assert.equal(getFilePropertiesErr, null);
assert.equal(blob.contentMD5, 'ZajifYh5KDgxtmS9i38K1A==');
done();
done();
});
});
});
@ -1164,4 +1276,4 @@ describe('FileUploadDownload', function () {
});
});
});
});
});

Просмотреть файл

@ -878,6 +878,41 @@ describe('QueueServiceTests', function() {
});
});
});
describe('Queue ACL', function() {
it('setQueueACL and getQueueACL should work', function(done) {
queueService.createQueueIfNotExists(queueName, function() {
var startDate = new Date('2015-01-01T12:00:00.0000000Z');
var expiryDate = new Date(startDate);
expiryDate.setMinutes(startDate.getMinutes() + 10);
var id = 'sampleIDForQueuePolicy';
var sharedAccessPolicy = [{
AccessPolicy: {
Permissions: QueueUtilities.SharedAccessPermissions.PROCESS,
Expiry: expiryDate
},
Id: id,
}];
var sharedAccessPolicyJustId = {
Id: id,
};
queueService.setQueueAcl(queueName, sharedAccessPolicy, function (error, result, response) {
assert.strictEqual(error, null);
queueService.getQueueAcl(queueName, function(error, result, response) {
assert.strictEqual(error, null);
assert.equal(result.name, queueName);
assert.equal(result.signedIdentifiers[0].Id, id);
assert.equal(result.signedIdentifiers[0].AccessPolicy.Permissions, QueueUtilities.SharedAccessPermissions.PROCESS);
assert.equal(result.signedIdentifiers[0].AccessPolicy.Expiry.toISOString(), expiryDate.toISOString());
done();
});
});
});
});
});
describe('testSAS', function() {
runOrSkip('should work with noPolicy', function(done) {
@ -911,7 +946,6 @@ describe('QueueServiceTests', function() {
var message = messages[0];
assert.equal(message.messagetext, text);
done();
});
});
});

Просмотреть файл

@ -20,19 +20,6 @@ function TableTestUtils(service, testPrefix) {
TableTestUtils.super_.call(this, service, testPrefix);
}
exports.listTables = function (prefix, options, token, callback) {
tableService.listTablesSegmentedWithPrefix(prefix, token, options, function(error, result) {
assert.equal(error, null);
tables.push.apply(tables, result.entries);
var token = result.continuationToken;
if(token) {
listTables(prefix, options, token, callback);
} else {
callback();
}
});
}
TableTestUtils.prototype.teardownTest = function (callback) {
var self = this;
@ -59,11 +46,12 @@ exports.createTableTestUtils = function (service, testPrefix) {
};
exports.listTables = function (tableService, prefix, accum, options, token, callback) {
var self = this;
tableService.listTablesSegmentedWithPrefix(prefix, token, options, function(error, result) {
accum.push.apply(accum, result.entries);
var token = result.continuationToken;
if(token) {
listTables(tableService, prefix, accum, options, token, callback);
self.listTables(tableService, prefix, accum, options, token, callback);
} else {
callback();
}

Просмотреть файл

@ -250,8 +250,7 @@ describe('tableservice-tests', function () {
tables.forEach(function (currentTable) {
if (currentTable === tableName1) {
entries += 1;
}
else if (currentTable === tableName2) {
} else if (currentTable === tableName2) {
entries += 2;
}
});
@ -312,6 +311,34 @@ describe('tableservice-tests', function () {
});
});
});
it('listTables with maximum result', function (done) {
var tables = [];
tabletestutil.listTables(tableService, tablePrefix, tables, null, null, function() {
assert.equal(tables.length, 0);
tableService.createTable(tableName1, function (createError, table1, createResponse) {
assert.equal(createError, null);
assert.notEqual(table1, null);
assert.equal(createResponse.statusCode, HttpConstants.HttpResponseCodes.NoContent);
tableService.createTable(tableName2, function (createError2, table2, createResponse2) {
assert.equal(createError2, null);
assert.notEqual(table2, null);
assert.equal(createResponse2.statusCode, HttpConstants.HttpResponseCodes.NoContent);
var options = { maxResults: 1 };
tableService.listTablesSegmentedWithPrefix(tablePrefix, null, options, function(error, result) {
assert.equal(error, null);
assert.notEqual(result.continuationToken, null);
assert.notEqual(result.continuationToken.nextTableName, null);
assert.equal(result.entries.length, 1);
done();
});
});
});
});
});
});
describe('InsertEntity', function () {
@ -809,6 +836,40 @@ describe('tableservice-tests', function () {
});
});
});
describe('Table ACL', function() {
it('setTableACL and getTableACL should work', function(done) {
tableService.createTableIfNotExists(tableName1, function() {
var startDate = new Date('2015-01-01T12:00:00.0000000Z');
var expiryDate = new Date(startDate.toISOString());
expiryDate.setMinutes(startDate.getMinutes() + 10);
var id = 'sampleIDForTablePolicy';
var sharedAccessPolicy = [{
AccessPolicy: {
Permissions: TableUtilities.SharedAccessPermissions.QUERY,
Expiry: expiryDate
},
Id: id,
}];
var sharedAccessPolicyJustId = {
Id: id,
};
tableService.setTableAcl(tableName1, sharedAccessPolicy, function (error, result, response) {
assert.strictEqual(error, null);
tableService.getTableAcl(tableName1, function(error, result, response) {
assert.strictEqual(error, null);
assert.equal(result.signedIdentifiers[0].Id, id);
assert.equal(result.signedIdentifiers[0].AccessPolicy.Permissions, TableUtilities.SharedAccessPermissions.QUERY);
assert.equal(result.signedIdentifiers[0].AccessPolicy.Expiry.toISOString(), expiryDate.toISOString());
done();
});
});
});
});
});
describe('SAS', function () {
runOrSkip('SASNoPolicy', function (done) {