diff --git a/.kokoro/mandatory-conformance.sh b/.kokoro/mandatory-conformance.sh index 81a8a9d82..879d224e4 100644 --- a/.kokoro/mandatory-conformance.sh +++ b/.kokoro/mandatory-conformance.sh @@ -38,7 +38,7 @@ popd # Run the conformance test skipping known failures cd cloud-bigtable-clients-test/tests -eval "go test -v -proxy_addr=:9999 -skip `tr -d '\n' < ../../testproxy/known_failures.txt`" +eval "go test -v -proxy_addr=:9999 -skip `tr -d '\n' < ../../testproxy/known_failures.txt``tr -d '\n' < ../../testproxy/known_unsupported.txt`" RETURN_CODE=$? echo "exiting with ${RETURN_CODE}" diff --git a/package.json b/package.json index 105166705..a2f740d64 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ ], "scripts": { "compile": "tsc -p . && cp -r proto* build/", - "compile-protos": "compileProtos src", + "compile-protos": "compileProtos src testproxy", "predocs": "npm run compile", "docs": "jsdoc -c .jsdoc.js", "predocs-test": "npm run docs", @@ -42,7 +42,7 @@ "pretest": "npm run compile", "test": "c8 mocha build/test", "test:snap": "SNAPSHOT_UPDATE=1 npm test", - "testproxy": "npm run compile && node testproxy/index.js", + "testproxy": "npm run compile && node build/testproxy/index.js", "clean": "gts clean", "precompile": "gts clean" }, diff --git a/protos/protos.d.ts b/protos/protos.d.ts index 7562867ab..f477a74c9 100644 --- a/protos/protos.d.ts +++ b/protos/protos.d.ts @@ -31021,6 +31021,2752 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } } + + /** Namespace testproxy. */ + namespace testproxy { + + /** OptionalFeatureConfig enum. */ + enum OptionalFeatureConfig { + OPTIONAL_FEATURE_CONFIG_DEFAULT = 0, + OPTIONAL_FEATURE_CONFIG_ENABLE_ALL = 1 + } + + /** Properties of a CreateClientRequest. */ + interface ICreateClientRequest { + + /** CreateClientRequest clientId */ + clientId?: (string|null); + + /** CreateClientRequest dataTarget */ + dataTarget?: (string|null); + + /** CreateClientRequest projectId */ + projectId?: (string|null); + + /** CreateClientRequest instanceId */ + instanceId?: (string|null); + + /** CreateClientRequest appProfileId */ + appProfileId?: (string|null); + + /** CreateClientRequest perOperationTimeout */ + perOperationTimeout?: (google.protobuf.IDuration|null); + + /** CreateClientRequest optionalFeatureConfig */ + optionalFeatureConfig?: (google.bigtable.testproxy.OptionalFeatureConfig|keyof typeof google.bigtable.testproxy.OptionalFeatureConfig|null); + + /** CreateClientRequest securityOptions */ + securityOptions?: (google.bigtable.testproxy.CreateClientRequest.ISecurityOptions|null); + } + + /** Represents a CreateClientRequest. */ + class CreateClientRequest implements ICreateClientRequest { + + /** + * Constructs a new CreateClientRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ICreateClientRequest); + + /** CreateClientRequest clientId. */ + public clientId: string; + + /** CreateClientRequest dataTarget. */ + public dataTarget: string; + + /** CreateClientRequest projectId. */ + public projectId: string; + + /** CreateClientRequest instanceId. */ + public instanceId: string; + + /** CreateClientRequest appProfileId. */ + public appProfileId: string; + + /** CreateClientRequest perOperationTimeout. */ + public perOperationTimeout?: (google.protobuf.IDuration|null); + + /** CreateClientRequest optionalFeatureConfig. */ + public optionalFeatureConfig: (google.bigtable.testproxy.OptionalFeatureConfig|keyof typeof google.bigtable.testproxy.OptionalFeatureConfig); + + /** CreateClientRequest securityOptions. */ + public securityOptions?: (google.bigtable.testproxy.CreateClientRequest.ISecurityOptions|null); + + /** + * Creates a new CreateClientRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns CreateClientRequest instance + */ + public static create(properties?: google.bigtable.testproxy.ICreateClientRequest): google.bigtable.testproxy.CreateClientRequest; + + /** + * Encodes the specified CreateClientRequest message. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.verify|verify} messages. + * @param message CreateClientRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ICreateClientRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CreateClientRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.verify|verify} messages. + * @param message CreateClientRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ICreateClientRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CreateClientRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CreateClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.CreateClientRequest; + + /** + * Decodes a CreateClientRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CreateClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.CreateClientRequest; + + /** + * Verifies a CreateClientRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CreateClientRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CreateClientRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.CreateClientRequest; + + /** + * Creates a plain object from a CreateClientRequest message. Also converts values to other types if specified. + * @param message CreateClientRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.CreateClientRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CreateClientRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CreateClientRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace CreateClientRequest { + + /** Properties of a SecurityOptions. */ + interface ISecurityOptions { + + /** SecurityOptions accessToken */ + accessToken?: (string|null); + + /** SecurityOptions useSsl */ + useSsl?: (boolean|null); + + /** SecurityOptions sslEndpointOverride */ + sslEndpointOverride?: (string|null); + + /** SecurityOptions sslRootCertsPem */ + sslRootCertsPem?: (string|null); + } + + /** Represents a SecurityOptions. */ + class SecurityOptions implements ISecurityOptions { + + /** + * Constructs a new SecurityOptions. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.CreateClientRequest.ISecurityOptions); + + /** SecurityOptions accessToken. */ + public accessToken: string; + + /** SecurityOptions useSsl. */ + public useSsl: boolean; + + /** SecurityOptions sslEndpointOverride. */ + public sslEndpointOverride: string; + + /** SecurityOptions sslRootCertsPem. */ + public sslRootCertsPem: string; + + /** + * Creates a new SecurityOptions instance using the specified properties. + * @param [properties] Properties to set + * @returns SecurityOptions instance + */ + public static create(properties?: google.bigtable.testproxy.CreateClientRequest.ISecurityOptions): google.bigtable.testproxy.CreateClientRequest.SecurityOptions; + + /** + * Encodes the specified SecurityOptions message. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.SecurityOptions.verify|verify} messages. + * @param message SecurityOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.CreateClientRequest.ISecurityOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SecurityOptions message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.SecurityOptions.verify|verify} messages. + * @param message SecurityOptions message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.CreateClientRequest.ISecurityOptions, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SecurityOptions message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SecurityOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.CreateClientRequest.SecurityOptions; + + /** + * Decodes a SecurityOptions message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SecurityOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.CreateClientRequest.SecurityOptions; + + /** + * Verifies a SecurityOptions message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SecurityOptions message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SecurityOptions + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.CreateClientRequest.SecurityOptions; + + /** + * Creates a plain object from a SecurityOptions message. Also converts values to other types if specified. + * @param message SecurityOptions + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.CreateClientRequest.SecurityOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SecurityOptions to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for SecurityOptions + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + } + + /** Properties of a CreateClientResponse. */ + interface ICreateClientResponse { + } + + /** Represents a CreateClientResponse. */ + class CreateClientResponse implements ICreateClientResponse { + + /** + * Constructs a new CreateClientResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ICreateClientResponse); + + /** + * Creates a new CreateClientResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns CreateClientResponse instance + */ + public static create(properties?: google.bigtable.testproxy.ICreateClientResponse): google.bigtable.testproxy.CreateClientResponse; + + /** + * Encodes the specified CreateClientResponse message. Does not implicitly {@link google.bigtable.testproxy.CreateClientResponse.verify|verify} messages. + * @param message CreateClientResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ICreateClientResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CreateClientResponse message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CreateClientResponse.verify|verify} messages. + * @param message CreateClientResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ICreateClientResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CreateClientResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CreateClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.CreateClientResponse; + + /** + * Decodes a CreateClientResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CreateClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.CreateClientResponse; + + /** + * Verifies a CreateClientResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CreateClientResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CreateClientResponse + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.CreateClientResponse; + + /** + * Creates a plain object from a CreateClientResponse message. Also converts values to other types if specified. + * @param message CreateClientResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.CreateClientResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CreateClientResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CreateClientResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CloseClientRequest. */ + interface ICloseClientRequest { + + /** CloseClientRequest clientId */ + clientId?: (string|null); + } + + /** Represents a CloseClientRequest. */ + class CloseClientRequest implements ICloseClientRequest { + + /** + * Constructs a new CloseClientRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ICloseClientRequest); + + /** CloseClientRequest clientId. */ + public clientId: string; + + /** + * Creates a new CloseClientRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns CloseClientRequest instance + */ + public static create(properties?: google.bigtable.testproxy.ICloseClientRequest): google.bigtable.testproxy.CloseClientRequest; + + /** + * Encodes the specified CloseClientRequest message. Does not implicitly {@link google.bigtable.testproxy.CloseClientRequest.verify|verify} messages. + * @param message CloseClientRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ICloseClientRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CloseClientRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CloseClientRequest.verify|verify} messages. + * @param message CloseClientRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ICloseClientRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CloseClientRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CloseClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.CloseClientRequest; + + /** + * Decodes a CloseClientRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CloseClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.CloseClientRequest; + + /** + * Verifies a CloseClientRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CloseClientRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CloseClientRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.CloseClientRequest; + + /** + * Creates a plain object from a CloseClientRequest message. Also converts values to other types if specified. + * @param message CloseClientRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.CloseClientRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CloseClientRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CloseClientRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CloseClientResponse. */ + interface ICloseClientResponse { + } + + /** Represents a CloseClientResponse. */ + class CloseClientResponse implements ICloseClientResponse { + + /** + * Constructs a new CloseClientResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ICloseClientResponse); + + /** + * Creates a new CloseClientResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns CloseClientResponse instance + */ + public static create(properties?: google.bigtable.testproxy.ICloseClientResponse): google.bigtable.testproxy.CloseClientResponse; + + /** + * Encodes the specified CloseClientResponse message. Does not implicitly {@link google.bigtable.testproxy.CloseClientResponse.verify|verify} messages. + * @param message CloseClientResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ICloseClientResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CloseClientResponse message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CloseClientResponse.verify|verify} messages. + * @param message CloseClientResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ICloseClientResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CloseClientResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CloseClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.CloseClientResponse; + + /** + * Decodes a CloseClientResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CloseClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.CloseClientResponse; + + /** + * Verifies a CloseClientResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CloseClientResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CloseClientResponse + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.CloseClientResponse; + + /** + * Creates a plain object from a CloseClientResponse message. Also converts values to other types if specified. + * @param message CloseClientResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.CloseClientResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CloseClientResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CloseClientResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a RemoveClientRequest. */ + interface IRemoveClientRequest { + + /** RemoveClientRequest clientId */ + clientId?: (string|null); + } + + /** Represents a RemoveClientRequest. */ + class RemoveClientRequest implements IRemoveClientRequest { + + /** + * Constructs a new RemoveClientRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IRemoveClientRequest); + + /** RemoveClientRequest clientId. */ + public clientId: string; + + /** + * Creates a new RemoveClientRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns RemoveClientRequest instance + */ + public static create(properties?: google.bigtable.testproxy.IRemoveClientRequest): google.bigtable.testproxy.RemoveClientRequest; + + /** + * Encodes the specified RemoveClientRequest message. Does not implicitly {@link google.bigtable.testproxy.RemoveClientRequest.verify|verify} messages. + * @param message RemoveClientRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IRemoveClientRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RemoveClientRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RemoveClientRequest.verify|verify} messages. + * @param message RemoveClientRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IRemoveClientRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RemoveClientRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RemoveClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.RemoveClientRequest; + + /** + * Decodes a RemoveClientRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RemoveClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.RemoveClientRequest; + + /** + * Verifies a RemoveClientRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RemoveClientRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RemoveClientRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.RemoveClientRequest; + + /** + * Creates a plain object from a RemoveClientRequest message. Also converts values to other types if specified. + * @param message RemoveClientRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.RemoveClientRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RemoveClientRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RemoveClientRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a RemoveClientResponse. */ + interface IRemoveClientResponse { + } + + /** Represents a RemoveClientResponse. */ + class RemoveClientResponse implements IRemoveClientResponse { + + /** + * Constructs a new RemoveClientResponse. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IRemoveClientResponse); + + /** + * Creates a new RemoveClientResponse instance using the specified properties. + * @param [properties] Properties to set + * @returns RemoveClientResponse instance + */ + public static create(properties?: google.bigtable.testproxy.IRemoveClientResponse): google.bigtable.testproxy.RemoveClientResponse; + + /** + * Encodes the specified RemoveClientResponse message. Does not implicitly {@link google.bigtable.testproxy.RemoveClientResponse.verify|verify} messages. + * @param message RemoveClientResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IRemoveClientResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RemoveClientResponse message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RemoveClientResponse.verify|verify} messages. + * @param message RemoveClientResponse message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IRemoveClientResponse, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RemoveClientResponse message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RemoveClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.RemoveClientResponse; + + /** + * Decodes a RemoveClientResponse message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RemoveClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.RemoveClientResponse; + + /** + * Verifies a RemoveClientResponse message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RemoveClientResponse message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RemoveClientResponse + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.RemoveClientResponse; + + /** + * Creates a plain object from a RemoveClientResponse message. Also converts values to other types if specified. + * @param message RemoveClientResponse + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.RemoveClientResponse, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RemoveClientResponse to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RemoveClientResponse + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a ReadRowRequest. */ + interface IReadRowRequest { + + /** ReadRowRequest clientId */ + clientId?: (string|null); + + /** ReadRowRequest tableName */ + tableName?: (string|null); + + /** ReadRowRequest rowKey */ + rowKey?: (string|null); + + /** ReadRowRequest filter */ + filter?: (google.bigtable.v2.IRowFilter|null); + } + + /** Represents a ReadRowRequest. */ + class ReadRowRequest implements IReadRowRequest { + + /** + * Constructs a new ReadRowRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IReadRowRequest); + + /** ReadRowRequest clientId. */ + public clientId: string; + + /** ReadRowRequest tableName. */ + public tableName: string; + + /** ReadRowRequest rowKey. */ + public rowKey: string; + + /** ReadRowRequest filter. */ + public filter?: (google.bigtable.v2.IRowFilter|null); + + /** + * Creates a new ReadRowRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadRowRequest instance + */ + public static create(properties?: google.bigtable.testproxy.IReadRowRequest): google.bigtable.testproxy.ReadRowRequest; + + /** + * Encodes the specified ReadRowRequest message. Does not implicitly {@link google.bigtable.testproxy.ReadRowRequest.verify|verify} messages. + * @param message ReadRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IReadRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ReadRowRequest.verify|verify} messages. + * @param message ReadRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IReadRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadRowRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.ReadRowRequest; + + /** + * Decodes a ReadRowRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.ReadRowRequest; + + /** + * Verifies a ReadRowRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadRowRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadRowRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.ReadRowRequest; + + /** + * Creates a plain object from a ReadRowRequest message. Also converts values to other types if specified. + * @param message ReadRowRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.ReadRowRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadRowRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadRowRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a RowResult. */ + interface IRowResult { + + /** RowResult status */ + status?: (google.rpc.IStatus|null); + + /** RowResult row */ + row?: (google.bigtable.v2.IRow|null); + } + + /** Represents a RowResult. */ + class RowResult implements IRowResult { + + /** + * Constructs a new RowResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IRowResult); + + /** RowResult status. */ + public status?: (google.rpc.IStatus|null); + + /** RowResult row. */ + public row?: (google.bigtable.v2.IRow|null); + + /** + * Creates a new RowResult instance using the specified properties. + * @param [properties] Properties to set + * @returns RowResult instance + */ + public static create(properties?: google.bigtable.testproxy.IRowResult): google.bigtable.testproxy.RowResult; + + /** + * Encodes the specified RowResult message. Does not implicitly {@link google.bigtable.testproxy.RowResult.verify|verify} messages. + * @param message RowResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IRowResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RowResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RowResult.verify|verify} messages. + * @param message RowResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IRowResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RowResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.RowResult; + + /** + * Decodes a RowResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.RowResult; + + /** + * Verifies a RowResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RowResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RowResult + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.RowResult; + + /** + * Creates a plain object from a RowResult message. Also converts values to other types if specified. + * @param message RowResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.RowResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RowResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RowResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a ReadRowsRequest. */ + interface IReadRowsRequest { + + /** ReadRowsRequest clientId */ + clientId?: (string|null); + + /** ReadRowsRequest request */ + request?: (google.bigtable.v2.IReadRowsRequest|null); + + /** ReadRowsRequest cancelAfterRows */ + cancelAfterRows?: (number|null); + } + + /** Represents a ReadRowsRequest. */ + class ReadRowsRequest implements IReadRowsRequest { + + /** + * Constructs a new ReadRowsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IReadRowsRequest); + + /** ReadRowsRequest clientId. */ + public clientId: string; + + /** ReadRowsRequest request. */ + public request?: (google.bigtable.v2.IReadRowsRequest|null); + + /** ReadRowsRequest cancelAfterRows. */ + public cancelAfterRows: number; + + /** + * Creates a new ReadRowsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadRowsRequest instance + */ + public static create(properties?: google.bigtable.testproxy.IReadRowsRequest): google.bigtable.testproxy.ReadRowsRequest; + + /** + * Encodes the specified ReadRowsRequest message. Does not implicitly {@link google.bigtable.testproxy.ReadRowsRequest.verify|verify} messages. + * @param message ReadRowsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IReadRowsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadRowsRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ReadRowsRequest.verify|verify} messages. + * @param message ReadRowsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IReadRowsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadRowsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.ReadRowsRequest; + + /** + * Decodes a ReadRowsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.ReadRowsRequest; + + /** + * Verifies a ReadRowsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadRowsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadRowsRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.ReadRowsRequest; + + /** + * Creates a plain object from a ReadRowsRequest message. Also converts values to other types if specified. + * @param message ReadRowsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.ReadRowsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadRowsRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadRowsRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a RowsResult. */ + interface IRowsResult { + + /** RowsResult status */ + status?: (google.rpc.IStatus|null); + + /** RowsResult rows */ + rows?: (google.bigtable.v2.IRow[]|null); + } + + /** Represents a RowsResult. */ + class RowsResult implements IRowsResult { + + /** + * Constructs a new RowsResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IRowsResult); + + /** RowsResult status. */ + public status?: (google.rpc.IStatus|null); + + /** RowsResult rows. */ + public rows: google.bigtable.v2.IRow[]; + + /** + * Creates a new RowsResult instance using the specified properties. + * @param [properties] Properties to set + * @returns RowsResult instance + */ + public static create(properties?: google.bigtable.testproxy.IRowsResult): google.bigtable.testproxy.RowsResult; + + /** + * Encodes the specified RowsResult message. Does not implicitly {@link google.bigtable.testproxy.RowsResult.verify|verify} messages. + * @param message RowsResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IRowsResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RowsResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RowsResult.verify|verify} messages. + * @param message RowsResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IRowsResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RowsResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns RowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.RowsResult; + + /** + * Decodes a RowsResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns RowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.RowsResult; + + /** + * Verifies a RowsResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a RowsResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns RowsResult + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.RowsResult; + + /** + * Creates a plain object from a RowsResult message. Also converts values to other types if specified. + * @param message RowsResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.RowsResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this RowsResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for RowsResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a MutateRowRequest. */ + interface IMutateRowRequest { + + /** MutateRowRequest clientId */ + clientId?: (string|null); + + /** MutateRowRequest request */ + request?: (google.bigtable.v2.IMutateRowRequest|null); + } + + /** Represents a MutateRowRequest. */ + class MutateRowRequest implements IMutateRowRequest { + + /** + * Constructs a new MutateRowRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IMutateRowRequest); + + /** MutateRowRequest clientId. */ + public clientId: string; + + /** MutateRowRequest request. */ + public request?: (google.bigtable.v2.IMutateRowRequest|null); + + /** + * Creates a new MutateRowRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns MutateRowRequest instance + */ + public static create(properties?: google.bigtable.testproxy.IMutateRowRequest): google.bigtable.testproxy.MutateRowRequest; + + /** + * Encodes the specified MutateRowRequest message. Does not implicitly {@link google.bigtable.testproxy.MutateRowRequest.verify|verify} messages. + * @param message MutateRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IMutateRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MutateRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowRequest.verify|verify} messages. + * @param message MutateRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IMutateRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MutateRowRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.MutateRowRequest; + + /** + * Decodes a MutateRowRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.MutateRowRequest; + + /** + * Verifies a MutateRowRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MutateRowRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MutateRowRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.MutateRowRequest; + + /** + * Creates a plain object from a MutateRowRequest message. Also converts values to other types if specified. + * @param message MutateRowRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.MutateRowRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MutateRowRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MutateRowRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a MutateRowResult. */ + interface IMutateRowResult { + + /** MutateRowResult status */ + status?: (google.rpc.IStatus|null); + } + + /** Represents a MutateRowResult. */ + class MutateRowResult implements IMutateRowResult { + + /** + * Constructs a new MutateRowResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IMutateRowResult); + + /** MutateRowResult status. */ + public status?: (google.rpc.IStatus|null); + + /** + * Creates a new MutateRowResult instance using the specified properties. + * @param [properties] Properties to set + * @returns MutateRowResult instance + */ + public static create(properties?: google.bigtable.testproxy.IMutateRowResult): google.bigtable.testproxy.MutateRowResult; + + /** + * Encodes the specified MutateRowResult message. Does not implicitly {@link google.bigtable.testproxy.MutateRowResult.verify|verify} messages. + * @param message MutateRowResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IMutateRowResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MutateRowResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowResult.verify|verify} messages. + * @param message MutateRowResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IMutateRowResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MutateRowResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.MutateRowResult; + + /** + * Decodes a MutateRowResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.MutateRowResult; + + /** + * Verifies a MutateRowResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MutateRowResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MutateRowResult + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.MutateRowResult; + + /** + * Creates a plain object from a MutateRowResult message. Also converts values to other types if specified. + * @param message MutateRowResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.MutateRowResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MutateRowResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MutateRowResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a MutateRowsRequest. */ + interface IMutateRowsRequest { + + /** MutateRowsRequest clientId */ + clientId?: (string|null); + + /** MutateRowsRequest request */ + request?: (google.bigtable.v2.IMutateRowsRequest|null); + } + + /** Represents a MutateRowsRequest. */ + class MutateRowsRequest implements IMutateRowsRequest { + + /** + * Constructs a new MutateRowsRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IMutateRowsRequest); + + /** MutateRowsRequest clientId. */ + public clientId: string; + + /** MutateRowsRequest request. */ + public request?: (google.bigtable.v2.IMutateRowsRequest|null); + + /** + * Creates a new MutateRowsRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns MutateRowsRequest instance + */ + public static create(properties?: google.bigtable.testproxy.IMutateRowsRequest): google.bigtable.testproxy.MutateRowsRequest; + + /** + * Encodes the specified MutateRowsRequest message. Does not implicitly {@link google.bigtable.testproxy.MutateRowsRequest.verify|verify} messages. + * @param message MutateRowsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IMutateRowsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MutateRowsRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowsRequest.verify|verify} messages. + * @param message MutateRowsRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IMutateRowsRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MutateRowsRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MutateRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.MutateRowsRequest; + + /** + * Decodes a MutateRowsRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MutateRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.MutateRowsRequest; + + /** + * Verifies a MutateRowsRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MutateRowsRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MutateRowsRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.MutateRowsRequest; + + /** + * Creates a plain object from a MutateRowsRequest message. Also converts values to other types if specified. + * @param message MutateRowsRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.MutateRowsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MutateRowsRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MutateRowsRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a MutateRowsResult. */ + interface IMutateRowsResult { + + /** MutateRowsResult status */ + status?: (google.rpc.IStatus|null); + + /** MutateRowsResult entries */ + entries?: (google.bigtable.v2.MutateRowsResponse.IEntry[]|null); + } + + /** Represents a MutateRowsResult. */ + class MutateRowsResult implements IMutateRowsResult { + + /** + * Constructs a new MutateRowsResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IMutateRowsResult); + + /** MutateRowsResult status. */ + public status?: (google.rpc.IStatus|null); + + /** MutateRowsResult entries. */ + public entries: google.bigtable.v2.MutateRowsResponse.IEntry[]; + + /** + * Creates a new MutateRowsResult instance using the specified properties. + * @param [properties] Properties to set + * @returns MutateRowsResult instance + */ + public static create(properties?: google.bigtable.testproxy.IMutateRowsResult): google.bigtable.testproxy.MutateRowsResult; + + /** + * Encodes the specified MutateRowsResult message. Does not implicitly {@link google.bigtable.testproxy.MutateRowsResult.verify|verify} messages. + * @param message MutateRowsResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IMutateRowsResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MutateRowsResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowsResult.verify|verify} messages. + * @param message MutateRowsResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IMutateRowsResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MutateRowsResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns MutateRowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.MutateRowsResult; + + /** + * Decodes a MutateRowsResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns MutateRowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.MutateRowsResult; + + /** + * Verifies a MutateRowsResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a MutateRowsResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns MutateRowsResult + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.MutateRowsResult; + + /** + * Creates a plain object from a MutateRowsResult message. Also converts values to other types if specified. + * @param message MutateRowsResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.MutateRowsResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this MutateRowsResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for MutateRowsResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CheckAndMutateRowRequest. */ + interface ICheckAndMutateRowRequest { + + /** CheckAndMutateRowRequest clientId */ + clientId?: (string|null); + + /** CheckAndMutateRowRequest request */ + request?: (google.bigtable.v2.ICheckAndMutateRowRequest|null); + } + + /** Represents a CheckAndMutateRowRequest. */ + class CheckAndMutateRowRequest implements ICheckAndMutateRowRequest { + + /** + * Constructs a new CheckAndMutateRowRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ICheckAndMutateRowRequest); + + /** CheckAndMutateRowRequest clientId. */ + public clientId: string; + + /** CheckAndMutateRowRequest request. */ + public request?: (google.bigtable.v2.ICheckAndMutateRowRequest|null); + + /** + * Creates a new CheckAndMutateRowRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns CheckAndMutateRowRequest instance + */ + public static create(properties?: google.bigtable.testproxy.ICheckAndMutateRowRequest): google.bigtable.testproxy.CheckAndMutateRowRequest; + + /** + * Encodes the specified CheckAndMutateRowRequest message. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowRequest.verify|verify} messages. + * @param message CheckAndMutateRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ICheckAndMutateRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CheckAndMutateRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowRequest.verify|verify} messages. + * @param message CheckAndMutateRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ICheckAndMutateRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CheckAndMutateRowRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CheckAndMutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.CheckAndMutateRowRequest; + + /** + * Decodes a CheckAndMutateRowRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CheckAndMutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.CheckAndMutateRowRequest; + + /** + * Verifies a CheckAndMutateRowRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CheckAndMutateRowRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CheckAndMutateRowRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.CheckAndMutateRowRequest; + + /** + * Creates a plain object from a CheckAndMutateRowRequest message. Also converts values to other types if specified. + * @param message CheckAndMutateRowRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.CheckAndMutateRowRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CheckAndMutateRowRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CheckAndMutateRowRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a CheckAndMutateRowResult. */ + interface ICheckAndMutateRowResult { + + /** CheckAndMutateRowResult status */ + status?: (google.rpc.IStatus|null); + + /** CheckAndMutateRowResult result */ + result?: (google.bigtable.v2.ICheckAndMutateRowResponse|null); + } + + /** Represents a CheckAndMutateRowResult. */ + class CheckAndMutateRowResult implements ICheckAndMutateRowResult { + + /** + * Constructs a new CheckAndMutateRowResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ICheckAndMutateRowResult); + + /** CheckAndMutateRowResult status. */ + public status?: (google.rpc.IStatus|null); + + /** CheckAndMutateRowResult result. */ + public result?: (google.bigtable.v2.ICheckAndMutateRowResponse|null); + + /** + * Creates a new CheckAndMutateRowResult instance using the specified properties. + * @param [properties] Properties to set + * @returns CheckAndMutateRowResult instance + */ + public static create(properties?: google.bigtable.testproxy.ICheckAndMutateRowResult): google.bigtable.testproxy.CheckAndMutateRowResult; + + /** + * Encodes the specified CheckAndMutateRowResult message. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowResult.verify|verify} messages. + * @param message CheckAndMutateRowResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ICheckAndMutateRowResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CheckAndMutateRowResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowResult.verify|verify} messages. + * @param message CheckAndMutateRowResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ICheckAndMutateRowResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CheckAndMutateRowResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns CheckAndMutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.CheckAndMutateRowResult; + + /** + * Decodes a CheckAndMutateRowResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns CheckAndMutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.CheckAndMutateRowResult; + + /** + * Verifies a CheckAndMutateRowResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a CheckAndMutateRowResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns CheckAndMutateRowResult + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.CheckAndMutateRowResult; + + /** + * Creates a plain object from a CheckAndMutateRowResult message. Also converts values to other types if specified. + * @param message CheckAndMutateRowResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.CheckAndMutateRowResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this CheckAndMutateRowResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for CheckAndMutateRowResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a SampleRowKeysRequest. */ + interface ISampleRowKeysRequest { + + /** SampleRowKeysRequest clientId */ + clientId?: (string|null); + + /** SampleRowKeysRequest request */ + request?: (google.bigtable.v2.ISampleRowKeysRequest|null); + } + + /** Represents a SampleRowKeysRequest. */ + class SampleRowKeysRequest implements ISampleRowKeysRequest { + + /** + * Constructs a new SampleRowKeysRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ISampleRowKeysRequest); + + /** SampleRowKeysRequest clientId. */ + public clientId: string; + + /** SampleRowKeysRequest request. */ + public request?: (google.bigtable.v2.ISampleRowKeysRequest|null); + + /** + * Creates a new SampleRowKeysRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns SampleRowKeysRequest instance + */ + public static create(properties?: google.bigtable.testproxy.ISampleRowKeysRequest): google.bigtable.testproxy.SampleRowKeysRequest; + + /** + * Encodes the specified SampleRowKeysRequest message. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysRequest.verify|verify} messages. + * @param message SampleRowKeysRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ISampleRowKeysRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SampleRowKeysRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysRequest.verify|verify} messages. + * @param message SampleRowKeysRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ISampleRowKeysRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SampleRowKeysRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SampleRowKeysRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.SampleRowKeysRequest; + + /** + * Decodes a SampleRowKeysRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SampleRowKeysRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.SampleRowKeysRequest; + + /** + * Verifies a SampleRowKeysRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SampleRowKeysRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SampleRowKeysRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.SampleRowKeysRequest; + + /** + * Creates a plain object from a SampleRowKeysRequest message. Also converts values to other types if specified. + * @param message SampleRowKeysRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.SampleRowKeysRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SampleRowKeysRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for SampleRowKeysRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a SampleRowKeysResult. */ + interface ISampleRowKeysResult { + + /** SampleRowKeysResult status */ + status?: (google.rpc.IStatus|null); + + /** SampleRowKeysResult samples */ + samples?: (google.bigtable.v2.ISampleRowKeysResponse[]|null); + } + + /** Represents a SampleRowKeysResult. */ + class SampleRowKeysResult implements ISampleRowKeysResult { + + /** + * Constructs a new SampleRowKeysResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ISampleRowKeysResult); + + /** SampleRowKeysResult status. */ + public status?: (google.rpc.IStatus|null); + + /** SampleRowKeysResult samples. */ + public samples: google.bigtable.v2.ISampleRowKeysResponse[]; + + /** + * Creates a new SampleRowKeysResult instance using the specified properties. + * @param [properties] Properties to set + * @returns SampleRowKeysResult instance + */ + public static create(properties?: google.bigtable.testproxy.ISampleRowKeysResult): google.bigtable.testproxy.SampleRowKeysResult; + + /** + * Encodes the specified SampleRowKeysResult message. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysResult.verify|verify} messages. + * @param message SampleRowKeysResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ISampleRowKeysResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SampleRowKeysResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysResult.verify|verify} messages. + * @param message SampleRowKeysResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ISampleRowKeysResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SampleRowKeysResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SampleRowKeysResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.SampleRowKeysResult; + + /** + * Decodes a SampleRowKeysResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SampleRowKeysResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.SampleRowKeysResult; + + /** + * Verifies a SampleRowKeysResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SampleRowKeysResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SampleRowKeysResult + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.SampleRowKeysResult; + + /** + * Creates a plain object from a SampleRowKeysResult message. Also converts values to other types if specified. + * @param message SampleRowKeysResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.SampleRowKeysResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SampleRowKeysResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for SampleRowKeysResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a ReadModifyWriteRowRequest. */ + interface IReadModifyWriteRowRequest { + + /** ReadModifyWriteRowRequest clientId */ + clientId?: (string|null); + + /** ReadModifyWriteRowRequest request */ + request?: (google.bigtable.v2.IReadModifyWriteRowRequest|null); + } + + /** Represents a ReadModifyWriteRowRequest. */ + class ReadModifyWriteRowRequest implements IReadModifyWriteRowRequest { + + /** + * Constructs a new ReadModifyWriteRowRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IReadModifyWriteRowRequest); + + /** ReadModifyWriteRowRequest clientId. */ + public clientId: string; + + /** ReadModifyWriteRowRequest request. */ + public request?: (google.bigtable.v2.IReadModifyWriteRowRequest|null); + + /** + * Creates a new ReadModifyWriteRowRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadModifyWriteRowRequest instance + */ + public static create(properties?: google.bigtable.testproxy.IReadModifyWriteRowRequest): google.bigtable.testproxy.ReadModifyWriteRowRequest; + + /** + * Encodes the specified ReadModifyWriteRowRequest message. Does not implicitly {@link google.bigtable.testproxy.ReadModifyWriteRowRequest.verify|verify} messages. + * @param message ReadModifyWriteRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IReadModifyWriteRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReadModifyWriteRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ReadModifyWriteRowRequest.verify|verify} messages. + * @param message ReadModifyWriteRowRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IReadModifyWriteRowRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReadModifyWriteRowRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadModifyWriteRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.ReadModifyWriteRowRequest; + + /** + * Decodes a ReadModifyWriteRowRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadModifyWriteRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.ReadModifyWriteRowRequest; + + /** + * Verifies a ReadModifyWriteRowRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadModifyWriteRowRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadModifyWriteRowRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.ReadModifyWriteRowRequest; + + /** + * Creates a plain object from a ReadModifyWriteRowRequest message. Also converts values to other types if specified. + * @param message ReadModifyWriteRowRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.ReadModifyWriteRowRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadModifyWriteRowRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadModifyWriteRowRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of an ExecuteQueryRequest. */ + interface IExecuteQueryRequest { + + /** ExecuteQueryRequest clientId */ + clientId?: (string|null); + + /** ExecuteQueryRequest request */ + request?: (google.bigtable.v2.IExecuteQueryRequest|null); + } + + /** Represents an ExecuteQueryRequest. */ + class ExecuteQueryRequest implements IExecuteQueryRequest { + + /** + * Constructs a new ExecuteQueryRequest. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IExecuteQueryRequest); + + /** ExecuteQueryRequest clientId. */ + public clientId: string; + + /** ExecuteQueryRequest request. */ + public request?: (google.bigtable.v2.IExecuteQueryRequest|null); + + /** + * Creates a new ExecuteQueryRequest instance using the specified properties. + * @param [properties] Properties to set + * @returns ExecuteQueryRequest instance + */ + public static create(properties?: google.bigtable.testproxy.IExecuteQueryRequest): google.bigtable.testproxy.ExecuteQueryRequest; + + /** + * Encodes the specified ExecuteQueryRequest message. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryRequest.verify|verify} messages. + * @param message ExecuteQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IExecuteQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExecuteQueryRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryRequest.verify|verify} messages. + * @param message ExecuteQueryRequest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IExecuteQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExecuteQueryRequest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExecuteQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.ExecuteQueryRequest; + + /** + * Decodes an ExecuteQueryRequest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExecuteQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.ExecuteQueryRequest; + + /** + * Verifies an ExecuteQueryRequest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExecuteQueryRequest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExecuteQueryRequest + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.ExecuteQueryRequest; + + /** + * Creates a plain object from an ExecuteQueryRequest message. Also converts values to other types if specified. + * @param message ExecuteQueryRequest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.ExecuteQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExecuteQueryRequest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExecuteQueryRequest + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of an ExecuteQueryResult. */ + interface IExecuteQueryResult { + + /** ExecuteQueryResult status */ + status?: (google.rpc.IStatus|null); + + /** ExecuteQueryResult metadata */ + metadata?: (google.bigtable.testproxy.IResultSetMetadata|null); + + /** ExecuteQueryResult rows */ + rows?: (google.bigtable.testproxy.ISqlRow[]|null); + } + + /** Represents an ExecuteQueryResult. */ + class ExecuteQueryResult implements IExecuteQueryResult { + + /** + * Constructs a new ExecuteQueryResult. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IExecuteQueryResult); + + /** ExecuteQueryResult status. */ + public status?: (google.rpc.IStatus|null); + + /** ExecuteQueryResult metadata. */ + public metadata?: (google.bigtable.testproxy.IResultSetMetadata|null); + + /** ExecuteQueryResult rows. */ + public rows: google.bigtable.testproxy.ISqlRow[]; + + /** + * Creates a new ExecuteQueryResult instance using the specified properties. + * @param [properties] Properties to set + * @returns ExecuteQueryResult instance + */ + public static create(properties?: google.bigtable.testproxy.IExecuteQueryResult): google.bigtable.testproxy.ExecuteQueryResult; + + /** + * Encodes the specified ExecuteQueryResult message. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryResult.verify|verify} messages. + * @param message ExecuteQueryResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IExecuteQueryResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExecuteQueryResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryResult.verify|verify} messages. + * @param message ExecuteQueryResult message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IExecuteQueryResult, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExecuteQueryResult message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExecuteQueryResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.ExecuteQueryResult; + + /** + * Decodes an ExecuteQueryResult message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExecuteQueryResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.ExecuteQueryResult; + + /** + * Verifies an ExecuteQueryResult message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExecuteQueryResult message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExecuteQueryResult + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.ExecuteQueryResult; + + /** + * Creates a plain object from an ExecuteQueryResult message. Also converts values to other types if specified. + * @param message ExecuteQueryResult + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.ExecuteQueryResult, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExecuteQueryResult to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExecuteQueryResult + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a ResultSetMetadata. */ + interface IResultSetMetadata { + + /** ResultSetMetadata columns */ + columns?: (google.bigtable.v2.IColumnMetadata[]|null); + } + + /** Represents a ResultSetMetadata. */ + class ResultSetMetadata implements IResultSetMetadata { + + /** + * Constructs a new ResultSetMetadata. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.IResultSetMetadata); + + /** ResultSetMetadata columns. */ + public columns: google.bigtable.v2.IColumnMetadata[]; + + /** + * Creates a new ResultSetMetadata instance using the specified properties. + * @param [properties] Properties to set + * @returns ResultSetMetadata instance + */ + public static create(properties?: google.bigtable.testproxy.IResultSetMetadata): google.bigtable.testproxy.ResultSetMetadata; + + /** + * Encodes the specified ResultSetMetadata message. Does not implicitly {@link google.bigtable.testproxy.ResultSetMetadata.verify|verify} messages. + * @param message ResultSetMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.IResultSetMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ResultSetMetadata message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ResultSetMetadata.verify|verify} messages. + * @param message ResultSetMetadata message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.IResultSetMetadata, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ResultSetMetadata message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ResultSetMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.ResultSetMetadata; + + /** + * Decodes a ResultSetMetadata message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ResultSetMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.ResultSetMetadata; + + /** + * Verifies a ResultSetMetadata message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ResultSetMetadata message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ResultSetMetadata + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.ResultSetMetadata; + + /** + * Creates a plain object from a ResultSetMetadata message. Also converts values to other types if specified. + * @param message ResultSetMetadata + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.ResultSetMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ResultSetMetadata to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ResultSetMetadata + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Properties of a SqlRow. */ + interface ISqlRow { + + /** SqlRow values */ + values?: (google.bigtable.v2.IValue[]|null); + } + + /** Represents a SqlRow. */ + class SqlRow implements ISqlRow { + + /** + * Constructs a new SqlRow. + * @param [properties] Properties to set + */ + constructor(properties?: google.bigtable.testproxy.ISqlRow); + + /** SqlRow values. */ + public values: google.bigtable.v2.IValue[]; + + /** + * Creates a new SqlRow instance using the specified properties. + * @param [properties] Properties to set + * @returns SqlRow instance + */ + public static create(properties?: google.bigtable.testproxy.ISqlRow): google.bigtable.testproxy.SqlRow; + + /** + * Encodes the specified SqlRow message. Does not implicitly {@link google.bigtable.testproxy.SqlRow.verify|verify} messages. + * @param message SqlRow message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.bigtable.testproxy.ISqlRow, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SqlRow message, length delimited. Does not implicitly {@link google.bigtable.testproxy.SqlRow.verify|verify} messages. + * @param message SqlRow message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.bigtable.testproxy.ISqlRow, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SqlRow message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SqlRow + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.bigtable.testproxy.SqlRow; + + /** + * Decodes a SqlRow message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SqlRow + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.bigtable.testproxy.SqlRow; + + /** + * Verifies a SqlRow message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SqlRow message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SqlRow + */ + public static fromObject(object: { [k: string]: any }): google.bigtable.testproxy.SqlRow; + + /** + * Creates a plain object from a SqlRow message. Also converts values to other types if specified. + * @param message SqlRow + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.bigtable.testproxy.SqlRow, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SqlRow to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for SqlRow + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + /** Represents a CloudBigtableV2TestProxy */ + class CloudBigtableV2TestProxy extends $protobuf.rpc.Service { + + /** + * Constructs a new CloudBigtableV2TestProxy service. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + */ + constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean); + + /** + * Creates new CloudBigtableV2TestProxy service using the specified rpc implementation. + * @param rpcImpl RPC implementation + * @param [requestDelimited=false] Whether requests are length-delimited + * @param [responseDelimited=false] Whether responses are length-delimited + * @returns RPC service. Useful where requests and/or responses are streamed. + */ + public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): CloudBigtableV2TestProxy; + + /** + * Calls CreateClient. + * @param request CreateClientRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CreateClientResponse + */ + public createClient(request: google.bigtable.testproxy.ICreateClientRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.CreateClientCallback): void; + + /** + * Calls CreateClient. + * @param request CreateClientRequest message or plain object + * @returns Promise + */ + public createClient(request: google.bigtable.testproxy.ICreateClientRequest): Promise; + + /** + * Calls CloseClient. + * @param request CloseClientRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CloseClientResponse + */ + public closeClient(request: google.bigtable.testproxy.ICloseClientRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.CloseClientCallback): void; + + /** + * Calls CloseClient. + * @param request CloseClientRequest message or plain object + * @returns Promise + */ + public closeClient(request: google.bigtable.testproxy.ICloseClientRequest): Promise; + + /** + * Calls RemoveClient. + * @param request RemoveClientRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RemoveClientResponse + */ + public removeClient(request: google.bigtable.testproxy.IRemoveClientRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.RemoveClientCallback): void; + + /** + * Calls RemoveClient. + * @param request RemoveClientRequest message or plain object + * @returns Promise + */ + public removeClient(request: google.bigtable.testproxy.IRemoveClientRequest): Promise; + + /** + * Calls ReadRow. + * @param request ReadRowRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RowResult + */ + public readRow(request: google.bigtable.testproxy.IReadRowRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.ReadRowCallback): void; + + /** + * Calls ReadRow. + * @param request ReadRowRequest message or plain object + * @returns Promise + */ + public readRow(request: google.bigtable.testproxy.IReadRowRequest): Promise; + + /** + * Calls ReadRows. + * @param request ReadRowsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RowsResult + */ + public readRows(request: google.bigtable.testproxy.IReadRowsRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.ReadRowsCallback): void; + + /** + * Calls ReadRows. + * @param request ReadRowsRequest message or plain object + * @returns Promise + */ + public readRows(request: google.bigtable.testproxy.IReadRowsRequest): Promise; + + /** + * Calls MutateRow. + * @param request MutateRowRequest message or plain object + * @param callback Node-style callback called with the error, if any, and MutateRowResult + */ + public mutateRow(request: google.bigtable.testproxy.IMutateRowRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.MutateRowCallback): void; + + /** + * Calls MutateRow. + * @param request MutateRowRequest message or plain object + * @returns Promise + */ + public mutateRow(request: google.bigtable.testproxy.IMutateRowRequest): Promise; + + /** + * Calls BulkMutateRows. + * @param request MutateRowsRequest message or plain object + * @param callback Node-style callback called with the error, if any, and MutateRowsResult + */ + public bulkMutateRows(request: google.bigtable.testproxy.IMutateRowsRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.BulkMutateRowsCallback): void; + + /** + * Calls BulkMutateRows. + * @param request MutateRowsRequest message or plain object + * @returns Promise + */ + public bulkMutateRows(request: google.bigtable.testproxy.IMutateRowsRequest): Promise; + + /** + * Calls CheckAndMutateRow. + * @param request CheckAndMutateRowRequest message or plain object + * @param callback Node-style callback called with the error, if any, and CheckAndMutateRowResult + */ + public checkAndMutateRow(request: google.bigtable.testproxy.ICheckAndMutateRowRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.CheckAndMutateRowCallback): void; + + /** + * Calls CheckAndMutateRow. + * @param request CheckAndMutateRowRequest message or plain object + * @returns Promise + */ + public checkAndMutateRow(request: google.bigtable.testproxy.ICheckAndMutateRowRequest): Promise; + + /** + * Calls SampleRowKeys. + * @param request SampleRowKeysRequest message or plain object + * @param callback Node-style callback called with the error, if any, and SampleRowKeysResult + */ + public sampleRowKeys(request: google.bigtable.testproxy.ISampleRowKeysRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.SampleRowKeysCallback): void; + + /** + * Calls SampleRowKeys. + * @param request SampleRowKeysRequest message or plain object + * @returns Promise + */ + public sampleRowKeys(request: google.bigtable.testproxy.ISampleRowKeysRequest): Promise; + + /** + * Calls ReadModifyWriteRow. + * @param request ReadModifyWriteRowRequest message or plain object + * @param callback Node-style callback called with the error, if any, and RowResult + */ + public readModifyWriteRow(request: google.bigtable.testproxy.IReadModifyWriteRowRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.ReadModifyWriteRowCallback): void; + + /** + * Calls ReadModifyWriteRow. + * @param request ReadModifyWriteRowRequest message or plain object + * @returns Promise + */ + public readModifyWriteRow(request: google.bigtable.testproxy.IReadModifyWriteRowRequest): Promise; + + /** + * Calls ExecuteQuery. + * @param request ExecuteQueryRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ExecuteQueryResult + */ + public executeQuery(request: google.bigtable.testproxy.IExecuteQueryRequest, callback: google.bigtable.testproxy.CloudBigtableV2TestProxy.ExecuteQueryCallback): void; + + /** + * Calls ExecuteQuery. + * @param request ExecuteQueryRequest message or plain object + * @returns Promise + */ + public executeQuery(request: google.bigtable.testproxy.IExecuteQueryRequest): Promise; + } + + namespace CloudBigtableV2TestProxy { + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|createClient}. + * @param error Error, if any + * @param [response] CreateClientResponse + */ + type CreateClientCallback = (error: (Error|null), response?: google.bigtable.testproxy.CreateClientResponse) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|closeClient}. + * @param error Error, if any + * @param [response] CloseClientResponse + */ + type CloseClientCallback = (error: (Error|null), response?: google.bigtable.testproxy.CloseClientResponse) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|removeClient}. + * @param error Error, if any + * @param [response] RemoveClientResponse + */ + type RemoveClientCallback = (error: (Error|null), response?: google.bigtable.testproxy.RemoveClientResponse) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|readRow}. + * @param error Error, if any + * @param [response] RowResult + */ + type ReadRowCallback = (error: (Error|null), response?: google.bigtable.testproxy.RowResult) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|readRows}. + * @param error Error, if any + * @param [response] RowsResult + */ + type ReadRowsCallback = (error: (Error|null), response?: google.bigtable.testproxy.RowsResult) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|mutateRow}. + * @param error Error, if any + * @param [response] MutateRowResult + */ + type MutateRowCallback = (error: (Error|null), response?: google.bigtable.testproxy.MutateRowResult) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|bulkMutateRows}. + * @param error Error, if any + * @param [response] MutateRowsResult + */ + type BulkMutateRowsCallback = (error: (Error|null), response?: google.bigtable.testproxy.MutateRowsResult) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|checkAndMutateRow}. + * @param error Error, if any + * @param [response] CheckAndMutateRowResult + */ + type CheckAndMutateRowCallback = (error: (Error|null), response?: google.bigtable.testproxy.CheckAndMutateRowResult) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|sampleRowKeys}. + * @param error Error, if any + * @param [response] SampleRowKeysResult + */ + type SampleRowKeysCallback = (error: (Error|null), response?: google.bigtable.testproxy.SampleRowKeysResult) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|readModifyWriteRow}. + * @param error Error, if any + * @param [response] RowResult + */ + type ReadModifyWriteRowCallback = (error: (Error|null), response?: google.bigtable.testproxy.RowResult) => void; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|executeQuery}. + * @param error Error, if any + * @param [response] ExecuteQueryResult + */ + type ExecuteQueryCallback = (error: (Error|null), response?: google.bigtable.testproxy.ExecuteQueryResult) => void; + } + } } /** Namespace api. */ diff --git a/protos/protos.js b/protos/protos.js index ec3958b8f..6a678e6a9 100644 --- a/protos/protos.js +++ b/protos/protos.js @@ -74126,6 +74126,6172 @@ return v2; })(); + bigtable.testproxy = (function() { + + /** + * Namespace testproxy. + * @memberof google.bigtable + * @namespace + */ + var testproxy = {}; + + /** + * OptionalFeatureConfig enum. + * @name google.bigtable.testproxy.OptionalFeatureConfig + * @enum {number} + * @property {number} OPTIONAL_FEATURE_CONFIG_DEFAULT=0 OPTIONAL_FEATURE_CONFIG_DEFAULT value + * @property {number} OPTIONAL_FEATURE_CONFIG_ENABLE_ALL=1 OPTIONAL_FEATURE_CONFIG_ENABLE_ALL value + */ + testproxy.OptionalFeatureConfig = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OPTIONAL_FEATURE_CONFIG_DEFAULT"] = 0; + values[valuesById[1] = "OPTIONAL_FEATURE_CONFIG_ENABLE_ALL"] = 1; + return values; + })(); + + testproxy.CreateClientRequest = (function() { + + /** + * Properties of a CreateClientRequest. + * @memberof google.bigtable.testproxy + * @interface ICreateClientRequest + * @property {string|null} [clientId] CreateClientRequest clientId + * @property {string|null} [dataTarget] CreateClientRequest dataTarget + * @property {string|null} [projectId] CreateClientRequest projectId + * @property {string|null} [instanceId] CreateClientRequest instanceId + * @property {string|null} [appProfileId] CreateClientRequest appProfileId + * @property {google.protobuf.IDuration|null} [perOperationTimeout] CreateClientRequest perOperationTimeout + * @property {google.bigtable.testproxy.OptionalFeatureConfig|null} [optionalFeatureConfig] CreateClientRequest optionalFeatureConfig + * @property {google.bigtable.testproxy.CreateClientRequest.ISecurityOptions|null} [securityOptions] CreateClientRequest securityOptions + */ + + /** + * Constructs a new CreateClientRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a CreateClientRequest. + * @implements ICreateClientRequest + * @constructor + * @param {google.bigtable.testproxy.ICreateClientRequest=} [properties] Properties to set + */ + function CreateClientRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CreateClientRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.clientId = ""; + + /** + * CreateClientRequest dataTarget. + * @member {string} dataTarget + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.dataTarget = ""; + + /** + * CreateClientRequest projectId. + * @member {string} projectId + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.projectId = ""; + + /** + * CreateClientRequest instanceId. + * @member {string} instanceId + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.instanceId = ""; + + /** + * CreateClientRequest appProfileId. + * @member {string} appProfileId + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.appProfileId = ""; + + /** + * CreateClientRequest perOperationTimeout. + * @member {google.protobuf.IDuration|null|undefined} perOperationTimeout + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.perOperationTimeout = null; + + /** + * CreateClientRequest optionalFeatureConfig. + * @member {google.bigtable.testproxy.OptionalFeatureConfig} optionalFeatureConfig + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.optionalFeatureConfig = 0; + + /** + * CreateClientRequest securityOptions. + * @member {google.bigtable.testproxy.CreateClientRequest.ISecurityOptions|null|undefined} securityOptions + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + */ + CreateClientRequest.prototype.securityOptions = null; + + /** + * Creates a new CreateClientRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {google.bigtable.testproxy.ICreateClientRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.CreateClientRequest} CreateClientRequest instance + */ + CreateClientRequest.create = function create(properties) { + return new CreateClientRequest(properties); + }; + + /** + * Encodes the specified CreateClientRequest message. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {google.bigtable.testproxy.ICreateClientRequest} message CreateClientRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateClientRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.dataTarget != null && Object.hasOwnProperty.call(message, "dataTarget")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.dataTarget); + if (message.projectId != null && Object.hasOwnProperty.call(message, "projectId")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.projectId); + if (message.instanceId != null && Object.hasOwnProperty.call(message, "instanceId")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.instanceId); + if (message.appProfileId != null && Object.hasOwnProperty.call(message, "appProfileId")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.appProfileId); + if (message.perOperationTimeout != null && Object.hasOwnProperty.call(message, "perOperationTimeout")) + $root.google.protobuf.Duration.encode(message.perOperationTimeout, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.optionalFeatureConfig != null && Object.hasOwnProperty.call(message, "optionalFeatureConfig")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.optionalFeatureConfig); + if (message.securityOptions != null && Object.hasOwnProperty.call(message, "securityOptions")) + $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions.encode(message.securityOptions, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified CreateClientRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {google.bigtable.testproxy.ICreateClientRequest} message CreateClientRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateClientRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CreateClientRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.CreateClientRequest} CreateClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateClientRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.CreateClientRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.dataTarget = reader.string(); + break; + } + case 3: { + message.projectId = reader.string(); + break; + } + case 4: { + message.instanceId = reader.string(); + break; + } + case 5: { + message.appProfileId = reader.string(); + break; + } + case 6: { + message.perOperationTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } + case 7: { + message.optionalFeatureConfig = reader.int32(); + break; + } + case 8: { + message.securityOptions = $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CreateClientRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.CreateClientRequest} CreateClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateClientRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CreateClientRequest message. + * @function verify + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CreateClientRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.dataTarget != null && message.hasOwnProperty("dataTarget")) + if (!$util.isString(message.dataTarget)) + return "dataTarget: string expected"; + if (message.projectId != null && message.hasOwnProperty("projectId")) + if (!$util.isString(message.projectId)) + return "projectId: string expected"; + if (message.instanceId != null && message.hasOwnProperty("instanceId")) + if (!$util.isString(message.instanceId)) + return "instanceId: string expected"; + if (message.appProfileId != null && message.hasOwnProperty("appProfileId")) + if (!$util.isString(message.appProfileId)) + return "appProfileId: string expected"; + if (message.perOperationTimeout != null && message.hasOwnProperty("perOperationTimeout")) { + var error = $root.google.protobuf.Duration.verify(message.perOperationTimeout); + if (error) + return "perOperationTimeout." + error; + } + if (message.optionalFeatureConfig != null && message.hasOwnProperty("optionalFeatureConfig")) + switch (message.optionalFeatureConfig) { + default: + return "optionalFeatureConfig: enum value expected"; + case 0: + case 1: + break; + } + if (message.securityOptions != null && message.hasOwnProperty("securityOptions")) { + var error = $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions.verify(message.securityOptions); + if (error) + return "securityOptions." + error; + } + return null; + }; + + /** + * Creates a CreateClientRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.CreateClientRequest} CreateClientRequest + */ + CreateClientRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.CreateClientRequest) + return object; + var message = new $root.google.bigtable.testproxy.CreateClientRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.dataTarget != null) + message.dataTarget = String(object.dataTarget); + if (object.projectId != null) + message.projectId = String(object.projectId); + if (object.instanceId != null) + message.instanceId = String(object.instanceId); + if (object.appProfileId != null) + message.appProfileId = String(object.appProfileId); + if (object.perOperationTimeout != null) { + if (typeof object.perOperationTimeout !== "object") + throw TypeError(".google.bigtable.testproxy.CreateClientRequest.perOperationTimeout: object expected"); + message.perOperationTimeout = $root.google.protobuf.Duration.fromObject(object.perOperationTimeout); + } + switch (object.optionalFeatureConfig) { + default: + if (typeof object.optionalFeatureConfig === "number") { + message.optionalFeatureConfig = object.optionalFeatureConfig; + break; + } + break; + case "OPTIONAL_FEATURE_CONFIG_DEFAULT": + case 0: + message.optionalFeatureConfig = 0; + break; + case "OPTIONAL_FEATURE_CONFIG_ENABLE_ALL": + case 1: + message.optionalFeatureConfig = 1; + break; + } + if (object.securityOptions != null) { + if (typeof object.securityOptions !== "object") + throw TypeError(".google.bigtable.testproxy.CreateClientRequest.securityOptions: object expected"); + message.securityOptions = $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions.fromObject(object.securityOptions); + } + return message; + }; + + /** + * Creates a plain object from a CreateClientRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {google.bigtable.testproxy.CreateClientRequest} message CreateClientRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CreateClientRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.dataTarget = ""; + object.projectId = ""; + object.instanceId = ""; + object.appProfileId = ""; + object.perOperationTimeout = null; + object.optionalFeatureConfig = options.enums === String ? "OPTIONAL_FEATURE_CONFIG_DEFAULT" : 0; + object.securityOptions = null; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.dataTarget != null && message.hasOwnProperty("dataTarget")) + object.dataTarget = message.dataTarget; + if (message.projectId != null && message.hasOwnProperty("projectId")) + object.projectId = message.projectId; + if (message.instanceId != null && message.hasOwnProperty("instanceId")) + object.instanceId = message.instanceId; + if (message.appProfileId != null && message.hasOwnProperty("appProfileId")) + object.appProfileId = message.appProfileId; + if (message.perOperationTimeout != null && message.hasOwnProperty("perOperationTimeout")) + object.perOperationTimeout = $root.google.protobuf.Duration.toObject(message.perOperationTimeout, options); + if (message.optionalFeatureConfig != null && message.hasOwnProperty("optionalFeatureConfig")) + object.optionalFeatureConfig = options.enums === String ? $root.google.bigtable.testproxy.OptionalFeatureConfig[message.optionalFeatureConfig] === undefined ? message.optionalFeatureConfig : $root.google.bigtable.testproxy.OptionalFeatureConfig[message.optionalFeatureConfig] : message.optionalFeatureConfig; + if (message.securityOptions != null && message.hasOwnProperty("securityOptions")) + object.securityOptions = $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions.toObject(message.securityOptions, options); + return object; + }; + + /** + * Converts this CreateClientRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.CreateClientRequest + * @instance + * @returns {Object.} JSON object + */ + CreateClientRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CreateClientRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.CreateClientRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CreateClientRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.CreateClientRequest"; + }; + + CreateClientRequest.SecurityOptions = (function() { + + /** + * Properties of a SecurityOptions. + * @memberof google.bigtable.testproxy.CreateClientRequest + * @interface ISecurityOptions + * @property {string|null} [accessToken] SecurityOptions accessToken + * @property {boolean|null} [useSsl] SecurityOptions useSsl + * @property {string|null} [sslEndpointOverride] SecurityOptions sslEndpointOverride + * @property {string|null} [sslRootCertsPem] SecurityOptions sslRootCertsPem + */ + + /** + * Constructs a new SecurityOptions. + * @memberof google.bigtable.testproxy.CreateClientRequest + * @classdesc Represents a SecurityOptions. + * @implements ISecurityOptions + * @constructor + * @param {google.bigtable.testproxy.CreateClientRequest.ISecurityOptions=} [properties] Properties to set + */ + function SecurityOptions(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SecurityOptions accessToken. + * @member {string} accessToken + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @instance + */ + SecurityOptions.prototype.accessToken = ""; + + /** + * SecurityOptions useSsl. + * @member {boolean} useSsl + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @instance + */ + SecurityOptions.prototype.useSsl = false; + + /** + * SecurityOptions sslEndpointOverride. + * @member {string} sslEndpointOverride + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @instance + */ + SecurityOptions.prototype.sslEndpointOverride = ""; + + /** + * SecurityOptions sslRootCertsPem. + * @member {string} sslRootCertsPem + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @instance + */ + SecurityOptions.prototype.sslRootCertsPem = ""; + + /** + * Creates a new SecurityOptions instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {google.bigtable.testproxy.CreateClientRequest.ISecurityOptions=} [properties] Properties to set + * @returns {google.bigtable.testproxy.CreateClientRequest.SecurityOptions} SecurityOptions instance + */ + SecurityOptions.create = function create(properties) { + return new SecurityOptions(properties); + }; + + /** + * Encodes the specified SecurityOptions message. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.SecurityOptions.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {google.bigtable.testproxy.CreateClientRequest.ISecurityOptions} message SecurityOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SecurityOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.accessToken != null && Object.hasOwnProperty.call(message, "accessToken")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.accessToken); + if (message.useSsl != null && Object.hasOwnProperty.call(message, "useSsl")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.useSsl); + if (message.sslEndpointOverride != null && Object.hasOwnProperty.call(message, "sslEndpointOverride")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.sslEndpointOverride); + if (message.sslRootCertsPem != null && Object.hasOwnProperty.call(message, "sslRootCertsPem")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.sslRootCertsPem); + return writer; + }; + + /** + * Encodes the specified SecurityOptions message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CreateClientRequest.SecurityOptions.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {google.bigtable.testproxy.CreateClientRequest.ISecurityOptions} message SecurityOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SecurityOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SecurityOptions message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.CreateClientRequest.SecurityOptions} SecurityOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SecurityOptions.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.accessToken = reader.string(); + break; + } + case 2: { + message.useSsl = reader.bool(); + break; + } + case 3: { + message.sslEndpointOverride = reader.string(); + break; + } + case 4: { + message.sslRootCertsPem = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SecurityOptions message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.CreateClientRequest.SecurityOptions} SecurityOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SecurityOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SecurityOptions message. + * @function verify + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SecurityOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.accessToken != null && message.hasOwnProperty("accessToken")) + if (!$util.isString(message.accessToken)) + return "accessToken: string expected"; + if (message.useSsl != null && message.hasOwnProperty("useSsl")) + if (typeof message.useSsl !== "boolean") + return "useSsl: boolean expected"; + if (message.sslEndpointOverride != null && message.hasOwnProperty("sslEndpointOverride")) + if (!$util.isString(message.sslEndpointOverride)) + return "sslEndpointOverride: string expected"; + if (message.sslRootCertsPem != null && message.hasOwnProperty("sslRootCertsPem")) + if (!$util.isString(message.sslRootCertsPem)) + return "sslRootCertsPem: string expected"; + return null; + }; + + /** + * Creates a SecurityOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.CreateClientRequest.SecurityOptions} SecurityOptions + */ + SecurityOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions) + return object; + var message = new $root.google.bigtable.testproxy.CreateClientRequest.SecurityOptions(); + if (object.accessToken != null) + message.accessToken = String(object.accessToken); + if (object.useSsl != null) + message.useSsl = Boolean(object.useSsl); + if (object.sslEndpointOverride != null) + message.sslEndpointOverride = String(object.sslEndpointOverride); + if (object.sslRootCertsPem != null) + message.sslRootCertsPem = String(object.sslRootCertsPem); + return message; + }; + + /** + * Creates a plain object from a SecurityOptions message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {google.bigtable.testproxy.CreateClientRequest.SecurityOptions} message SecurityOptions + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SecurityOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.accessToken = ""; + object.useSsl = false; + object.sslEndpointOverride = ""; + object.sslRootCertsPem = ""; + } + if (message.accessToken != null && message.hasOwnProperty("accessToken")) + object.accessToken = message.accessToken; + if (message.useSsl != null && message.hasOwnProperty("useSsl")) + object.useSsl = message.useSsl; + if (message.sslEndpointOverride != null && message.hasOwnProperty("sslEndpointOverride")) + object.sslEndpointOverride = message.sslEndpointOverride; + if (message.sslRootCertsPem != null && message.hasOwnProperty("sslRootCertsPem")) + object.sslRootCertsPem = message.sslRootCertsPem; + return object; + }; + + /** + * Converts this SecurityOptions to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @instance + * @returns {Object.} JSON object + */ + SecurityOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for SecurityOptions + * @function getTypeUrl + * @memberof google.bigtable.testproxy.CreateClientRequest.SecurityOptions + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + SecurityOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.CreateClientRequest.SecurityOptions"; + }; + + return SecurityOptions; + })(); + + return CreateClientRequest; + })(); + + testproxy.CreateClientResponse = (function() { + + /** + * Properties of a CreateClientResponse. + * @memberof google.bigtable.testproxy + * @interface ICreateClientResponse + */ + + /** + * Constructs a new CreateClientResponse. + * @memberof google.bigtable.testproxy + * @classdesc Represents a CreateClientResponse. + * @implements ICreateClientResponse + * @constructor + * @param {google.bigtable.testproxy.ICreateClientResponse=} [properties] Properties to set + */ + function CreateClientResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new CreateClientResponse instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {google.bigtable.testproxy.ICreateClientResponse=} [properties] Properties to set + * @returns {google.bigtable.testproxy.CreateClientResponse} CreateClientResponse instance + */ + CreateClientResponse.create = function create(properties) { + return new CreateClientResponse(properties); + }; + + /** + * Encodes the specified CreateClientResponse message. Does not implicitly {@link google.bigtable.testproxy.CreateClientResponse.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {google.bigtable.testproxy.ICreateClientResponse} message CreateClientResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateClientResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified CreateClientResponse message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CreateClientResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {google.bigtable.testproxy.ICreateClientResponse} message CreateClientResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CreateClientResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CreateClientResponse message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.CreateClientResponse} CreateClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateClientResponse.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.CreateClientResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CreateClientResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.CreateClientResponse} CreateClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CreateClientResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CreateClientResponse message. + * @function verify + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CreateClientResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a CreateClientResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.CreateClientResponse} CreateClientResponse + */ + CreateClientResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.CreateClientResponse) + return object; + return new $root.google.bigtable.testproxy.CreateClientResponse(); + }; + + /** + * Creates a plain object from a CreateClientResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {google.bigtable.testproxy.CreateClientResponse} message CreateClientResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CreateClientResponse.toObject = function toObject() { + return {}; + }; + + /** + * Converts this CreateClientResponse to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.CreateClientResponse + * @instance + * @returns {Object.} JSON object + */ + CreateClientResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CreateClientResponse + * @function getTypeUrl + * @memberof google.bigtable.testproxy.CreateClientResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CreateClientResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.CreateClientResponse"; + }; + + return CreateClientResponse; + })(); + + testproxy.CloseClientRequest = (function() { + + /** + * Properties of a CloseClientRequest. + * @memberof google.bigtable.testproxy + * @interface ICloseClientRequest + * @property {string|null} [clientId] CloseClientRequest clientId + */ + + /** + * Constructs a new CloseClientRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a CloseClientRequest. + * @implements ICloseClientRequest + * @constructor + * @param {google.bigtable.testproxy.ICloseClientRequest=} [properties] Properties to set + */ + function CloseClientRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CloseClientRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.CloseClientRequest + * @instance + */ + CloseClientRequest.prototype.clientId = ""; + + /** + * Creates a new CloseClientRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {google.bigtable.testproxy.ICloseClientRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.CloseClientRequest} CloseClientRequest instance + */ + CloseClientRequest.create = function create(properties) { + return new CloseClientRequest(properties); + }; + + /** + * Encodes the specified CloseClientRequest message. Does not implicitly {@link google.bigtable.testproxy.CloseClientRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {google.bigtable.testproxy.ICloseClientRequest} message CloseClientRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CloseClientRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + return writer; + }; + + /** + * Encodes the specified CloseClientRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CloseClientRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {google.bigtable.testproxy.ICloseClientRequest} message CloseClientRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CloseClientRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CloseClientRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.CloseClientRequest} CloseClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CloseClientRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.CloseClientRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CloseClientRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.CloseClientRequest} CloseClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CloseClientRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CloseClientRequest message. + * @function verify + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CloseClientRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + return null; + }; + + /** + * Creates a CloseClientRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.CloseClientRequest} CloseClientRequest + */ + CloseClientRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.CloseClientRequest) + return object; + var message = new $root.google.bigtable.testproxy.CloseClientRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + return message; + }; + + /** + * Creates a plain object from a CloseClientRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {google.bigtable.testproxy.CloseClientRequest} message CloseClientRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CloseClientRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.clientId = ""; + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + return object; + }; + + /** + * Converts this CloseClientRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.CloseClientRequest + * @instance + * @returns {Object.} JSON object + */ + CloseClientRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CloseClientRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.CloseClientRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CloseClientRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.CloseClientRequest"; + }; + + return CloseClientRequest; + })(); + + testproxy.CloseClientResponse = (function() { + + /** + * Properties of a CloseClientResponse. + * @memberof google.bigtable.testproxy + * @interface ICloseClientResponse + */ + + /** + * Constructs a new CloseClientResponse. + * @memberof google.bigtable.testproxy + * @classdesc Represents a CloseClientResponse. + * @implements ICloseClientResponse + * @constructor + * @param {google.bigtable.testproxy.ICloseClientResponse=} [properties] Properties to set + */ + function CloseClientResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new CloseClientResponse instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {google.bigtable.testproxy.ICloseClientResponse=} [properties] Properties to set + * @returns {google.bigtable.testproxy.CloseClientResponse} CloseClientResponse instance + */ + CloseClientResponse.create = function create(properties) { + return new CloseClientResponse(properties); + }; + + /** + * Encodes the specified CloseClientResponse message. Does not implicitly {@link google.bigtable.testproxy.CloseClientResponse.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {google.bigtable.testproxy.ICloseClientResponse} message CloseClientResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CloseClientResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified CloseClientResponse message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CloseClientResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {google.bigtable.testproxy.ICloseClientResponse} message CloseClientResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CloseClientResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CloseClientResponse message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.CloseClientResponse} CloseClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CloseClientResponse.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.CloseClientResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CloseClientResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.CloseClientResponse} CloseClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CloseClientResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CloseClientResponse message. + * @function verify + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CloseClientResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a CloseClientResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.CloseClientResponse} CloseClientResponse + */ + CloseClientResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.CloseClientResponse) + return object; + return new $root.google.bigtable.testproxy.CloseClientResponse(); + }; + + /** + * Creates a plain object from a CloseClientResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {google.bigtable.testproxy.CloseClientResponse} message CloseClientResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CloseClientResponse.toObject = function toObject() { + return {}; + }; + + /** + * Converts this CloseClientResponse to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.CloseClientResponse + * @instance + * @returns {Object.} JSON object + */ + CloseClientResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CloseClientResponse + * @function getTypeUrl + * @memberof google.bigtable.testproxy.CloseClientResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CloseClientResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.CloseClientResponse"; + }; + + return CloseClientResponse; + })(); + + testproxy.RemoveClientRequest = (function() { + + /** + * Properties of a RemoveClientRequest. + * @memberof google.bigtable.testproxy + * @interface IRemoveClientRequest + * @property {string|null} [clientId] RemoveClientRequest clientId + */ + + /** + * Constructs a new RemoveClientRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a RemoveClientRequest. + * @implements IRemoveClientRequest + * @constructor + * @param {google.bigtable.testproxy.IRemoveClientRequest=} [properties] Properties to set + */ + function RemoveClientRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RemoveClientRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @instance + */ + RemoveClientRequest.prototype.clientId = ""; + + /** + * Creates a new RemoveClientRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {google.bigtable.testproxy.IRemoveClientRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.RemoveClientRequest} RemoveClientRequest instance + */ + RemoveClientRequest.create = function create(properties) { + return new RemoveClientRequest(properties); + }; + + /** + * Encodes the specified RemoveClientRequest message. Does not implicitly {@link google.bigtable.testproxy.RemoveClientRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {google.bigtable.testproxy.IRemoveClientRequest} message RemoveClientRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RemoveClientRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + return writer; + }; + + /** + * Encodes the specified RemoveClientRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RemoveClientRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {google.bigtable.testproxy.IRemoveClientRequest} message RemoveClientRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RemoveClientRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RemoveClientRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.RemoveClientRequest} RemoveClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RemoveClientRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.RemoveClientRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RemoveClientRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.RemoveClientRequest} RemoveClientRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RemoveClientRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RemoveClientRequest message. + * @function verify + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RemoveClientRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + return null; + }; + + /** + * Creates a RemoveClientRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.RemoveClientRequest} RemoveClientRequest + */ + RemoveClientRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.RemoveClientRequest) + return object; + var message = new $root.google.bigtable.testproxy.RemoveClientRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + return message; + }; + + /** + * Creates a plain object from a RemoveClientRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {google.bigtable.testproxy.RemoveClientRequest} message RemoveClientRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RemoveClientRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.clientId = ""; + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + return object; + }; + + /** + * Converts this RemoveClientRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @instance + * @returns {Object.} JSON object + */ + RemoveClientRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for RemoveClientRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.RemoveClientRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RemoveClientRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.RemoveClientRequest"; + }; + + return RemoveClientRequest; + })(); + + testproxy.RemoveClientResponse = (function() { + + /** + * Properties of a RemoveClientResponse. + * @memberof google.bigtable.testproxy + * @interface IRemoveClientResponse + */ + + /** + * Constructs a new RemoveClientResponse. + * @memberof google.bigtable.testproxy + * @classdesc Represents a RemoveClientResponse. + * @implements IRemoveClientResponse + * @constructor + * @param {google.bigtable.testproxy.IRemoveClientResponse=} [properties] Properties to set + */ + function RemoveClientResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new RemoveClientResponse instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {google.bigtable.testproxy.IRemoveClientResponse=} [properties] Properties to set + * @returns {google.bigtable.testproxy.RemoveClientResponse} RemoveClientResponse instance + */ + RemoveClientResponse.create = function create(properties) { + return new RemoveClientResponse(properties); + }; + + /** + * Encodes the specified RemoveClientResponse message. Does not implicitly {@link google.bigtable.testproxy.RemoveClientResponse.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {google.bigtable.testproxy.IRemoveClientResponse} message RemoveClientResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RemoveClientResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified RemoveClientResponse message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RemoveClientResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {google.bigtable.testproxy.IRemoveClientResponse} message RemoveClientResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RemoveClientResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RemoveClientResponse message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.RemoveClientResponse} RemoveClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RemoveClientResponse.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.RemoveClientResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RemoveClientResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.RemoveClientResponse} RemoveClientResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RemoveClientResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RemoveClientResponse message. + * @function verify + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RemoveClientResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a RemoveClientResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.RemoveClientResponse} RemoveClientResponse + */ + RemoveClientResponse.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.RemoveClientResponse) + return object; + return new $root.google.bigtable.testproxy.RemoveClientResponse(); + }; + + /** + * Creates a plain object from a RemoveClientResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {google.bigtable.testproxy.RemoveClientResponse} message RemoveClientResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RemoveClientResponse.toObject = function toObject() { + return {}; + }; + + /** + * Converts this RemoveClientResponse to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @instance + * @returns {Object.} JSON object + */ + RemoveClientResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for RemoveClientResponse + * @function getTypeUrl + * @memberof google.bigtable.testproxy.RemoveClientResponse + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RemoveClientResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.RemoveClientResponse"; + }; + + return RemoveClientResponse; + })(); + + testproxy.ReadRowRequest = (function() { + + /** + * Properties of a ReadRowRequest. + * @memberof google.bigtable.testproxy + * @interface IReadRowRequest + * @property {string|null} [clientId] ReadRowRequest clientId + * @property {string|null} [tableName] ReadRowRequest tableName + * @property {string|null} [rowKey] ReadRowRequest rowKey + * @property {google.bigtable.v2.IRowFilter|null} [filter] ReadRowRequest filter + */ + + /** + * Constructs a new ReadRowRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a ReadRowRequest. + * @implements IReadRowRequest + * @constructor + * @param {google.bigtable.testproxy.IReadRowRequest=} [properties] Properties to set + */ + function ReadRowRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadRowRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.ReadRowRequest + * @instance + */ + ReadRowRequest.prototype.clientId = ""; + + /** + * ReadRowRequest tableName. + * @member {string} tableName + * @memberof google.bigtable.testproxy.ReadRowRequest + * @instance + */ + ReadRowRequest.prototype.tableName = ""; + + /** + * ReadRowRequest rowKey. + * @member {string} rowKey + * @memberof google.bigtable.testproxy.ReadRowRequest + * @instance + */ + ReadRowRequest.prototype.rowKey = ""; + + /** + * ReadRowRequest filter. + * @member {google.bigtable.v2.IRowFilter|null|undefined} filter + * @memberof google.bigtable.testproxy.ReadRowRequest + * @instance + */ + ReadRowRequest.prototype.filter = null; + + /** + * Creates a new ReadRowRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {google.bigtable.testproxy.IReadRowRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.ReadRowRequest} ReadRowRequest instance + */ + ReadRowRequest.create = function create(properties) { + return new ReadRowRequest(properties); + }; + + /** + * Encodes the specified ReadRowRequest message. Does not implicitly {@link google.bigtable.testproxy.ReadRowRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {google.bigtable.testproxy.IReadRowRequest} message ReadRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadRowRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.rowKey != null && Object.hasOwnProperty.call(message, "rowKey")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.rowKey); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) + $root.google.bigtable.v2.RowFilter.encode(message.filter, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.tableName != null && Object.hasOwnProperty.call(message, "tableName")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.tableName); + return writer; + }; + + /** + * Encodes the specified ReadRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ReadRowRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {google.bigtable.testproxy.IReadRowRequest} message ReadRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadRowRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadRowRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.ReadRowRequest} ReadRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadRowRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.ReadRowRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 4: { + message.tableName = reader.string(); + break; + } + case 2: { + message.rowKey = reader.string(); + break; + } + case 3: { + message.filter = $root.google.bigtable.v2.RowFilter.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadRowRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.ReadRowRequest} ReadRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadRowRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadRowRequest message. + * @function verify + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadRowRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.tableName != null && message.hasOwnProperty("tableName")) + if (!$util.isString(message.tableName)) + return "tableName: string expected"; + if (message.rowKey != null && message.hasOwnProperty("rowKey")) + if (!$util.isString(message.rowKey)) + return "rowKey: string expected"; + if (message.filter != null && message.hasOwnProperty("filter")) { + var error = $root.google.bigtable.v2.RowFilter.verify(message.filter); + if (error) + return "filter." + error; + } + return null; + }; + + /** + * Creates a ReadRowRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.ReadRowRequest} ReadRowRequest + */ + ReadRowRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.ReadRowRequest) + return object; + var message = new $root.google.bigtable.testproxy.ReadRowRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.tableName != null) + message.tableName = String(object.tableName); + if (object.rowKey != null) + message.rowKey = String(object.rowKey); + if (object.filter != null) { + if (typeof object.filter !== "object") + throw TypeError(".google.bigtable.testproxy.ReadRowRequest.filter: object expected"); + message.filter = $root.google.bigtable.v2.RowFilter.fromObject(object.filter); + } + return message; + }; + + /** + * Creates a plain object from a ReadRowRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {google.bigtable.testproxy.ReadRowRequest} message ReadRowRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadRowRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.rowKey = ""; + object.filter = null; + object.tableName = ""; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.rowKey != null && message.hasOwnProperty("rowKey")) + object.rowKey = message.rowKey; + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = $root.google.bigtable.v2.RowFilter.toObject(message.filter, options); + if (message.tableName != null && message.hasOwnProperty("tableName")) + object.tableName = message.tableName; + return object; + }; + + /** + * Converts this ReadRowRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.ReadRowRequest + * @instance + * @returns {Object.} JSON object + */ + ReadRowRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ReadRowRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.ReadRowRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadRowRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.ReadRowRequest"; + }; + + return ReadRowRequest; + })(); + + testproxy.RowResult = (function() { + + /** + * Properties of a RowResult. + * @memberof google.bigtable.testproxy + * @interface IRowResult + * @property {google.rpc.IStatus|null} [status] RowResult status + * @property {google.bigtable.v2.IRow|null} [row] RowResult row + */ + + /** + * Constructs a new RowResult. + * @memberof google.bigtable.testproxy + * @classdesc Represents a RowResult. + * @implements IRowResult + * @constructor + * @param {google.bigtable.testproxy.IRowResult=} [properties] Properties to set + */ + function RowResult(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RowResult status. + * @member {google.rpc.IStatus|null|undefined} status + * @memberof google.bigtable.testproxy.RowResult + * @instance + */ + RowResult.prototype.status = null; + + /** + * RowResult row. + * @member {google.bigtable.v2.IRow|null|undefined} row + * @memberof google.bigtable.testproxy.RowResult + * @instance + */ + RowResult.prototype.row = null; + + /** + * Creates a new RowResult instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {google.bigtable.testproxy.IRowResult=} [properties] Properties to set + * @returns {google.bigtable.testproxy.RowResult} RowResult instance + */ + RowResult.create = function create(properties) { + return new RowResult(properties); + }; + + /** + * Encodes the specified RowResult message. Does not implicitly {@link google.bigtable.testproxy.RowResult.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {google.bigtable.testproxy.IRowResult} message RowResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RowResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && Object.hasOwnProperty.call(message, "status")) + $root.google.rpc.Status.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.row != null && Object.hasOwnProperty.call(message, "row")) + $root.google.bigtable.v2.Row.encode(message.row, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified RowResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RowResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {google.bigtable.testproxy.IRowResult} message RowResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RowResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RowResult message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.RowResult} RowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RowResult.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.RowResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + case 2: { + message.row = $root.google.bigtable.v2.Row.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RowResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.RowResult} RowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RowResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RowResult message. + * @function verify + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RowResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) { + var error = $root.google.rpc.Status.verify(message.status); + if (error) + return "status." + error; + } + if (message.row != null && message.hasOwnProperty("row")) { + var error = $root.google.bigtable.v2.Row.verify(message.row); + if (error) + return "row." + error; + } + return null; + }; + + /** + * Creates a RowResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.RowResult} RowResult + */ + RowResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.RowResult) + return object; + var message = new $root.google.bigtable.testproxy.RowResult(); + if (object.status != null) { + if (typeof object.status !== "object") + throw TypeError(".google.bigtable.testproxy.RowResult.status: object expected"); + message.status = $root.google.rpc.Status.fromObject(object.status); + } + if (object.row != null) { + if (typeof object.row !== "object") + throw TypeError(".google.bigtable.testproxy.RowResult.row: object expected"); + message.row = $root.google.bigtable.v2.Row.fromObject(object.row); + } + return message; + }; + + /** + * Creates a plain object from a RowResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {google.bigtable.testproxy.RowResult} message RowResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RowResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.status = null; + object.row = null; + } + if (message.status != null && message.hasOwnProperty("status")) + object.status = $root.google.rpc.Status.toObject(message.status, options); + if (message.row != null && message.hasOwnProperty("row")) + object.row = $root.google.bigtable.v2.Row.toObject(message.row, options); + return object; + }; + + /** + * Converts this RowResult to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.RowResult + * @instance + * @returns {Object.} JSON object + */ + RowResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for RowResult + * @function getTypeUrl + * @memberof google.bigtable.testproxy.RowResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RowResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.RowResult"; + }; + + return RowResult; + })(); + + testproxy.ReadRowsRequest = (function() { + + /** + * Properties of a ReadRowsRequest. + * @memberof google.bigtable.testproxy + * @interface IReadRowsRequest + * @property {string|null} [clientId] ReadRowsRequest clientId + * @property {google.bigtable.v2.IReadRowsRequest|null} [request] ReadRowsRequest request + * @property {number|null} [cancelAfterRows] ReadRowsRequest cancelAfterRows + */ + + /** + * Constructs a new ReadRowsRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a ReadRowsRequest. + * @implements IReadRowsRequest + * @constructor + * @param {google.bigtable.testproxy.IReadRowsRequest=} [properties] Properties to set + */ + function ReadRowsRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadRowsRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @instance + */ + ReadRowsRequest.prototype.clientId = ""; + + /** + * ReadRowsRequest request. + * @member {google.bigtable.v2.IReadRowsRequest|null|undefined} request + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @instance + */ + ReadRowsRequest.prototype.request = null; + + /** + * ReadRowsRequest cancelAfterRows. + * @member {number} cancelAfterRows + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @instance + */ + ReadRowsRequest.prototype.cancelAfterRows = 0; + + /** + * Creates a new ReadRowsRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {google.bigtable.testproxy.IReadRowsRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.ReadRowsRequest} ReadRowsRequest instance + */ + ReadRowsRequest.create = function create(properties) { + return new ReadRowsRequest(properties); + }; + + /** + * Encodes the specified ReadRowsRequest message. Does not implicitly {@link google.bigtable.testproxy.ReadRowsRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {google.bigtable.testproxy.IReadRowsRequest} message ReadRowsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadRowsRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.request != null && Object.hasOwnProperty.call(message, "request")) + $root.google.bigtable.v2.ReadRowsRequest.encode(message.request, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.cancelAfterRows != null && Object.hasOwnProperty.call(message, "cancelAfterRows")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.cancelAfterRows); + return writer; + }; + + /** + * Encodes the specified ReadRowsRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ReadRowsRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {google.bigtable.testproxy.IReadRowsRequest} message ReadRowsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadRowsRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadRowsRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.ReadRowsRequest} ReadRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadRowsRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.ReadRowsRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.request = $root.google.bigtable.v2.ReadRowsRequest.decode(reader, reader.uint32()); + break; + } + case 3: { + message.cancelAfterRows = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadRowsRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.ReadRowsRequest} ReadRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadRowsRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadRowsRequest message. + * @function verify + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadRowsRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.request != null && message.hasOwnProperty("request")) { + var error = $root.google.bigtable.v2.ReadRowsRequest.verify(message.request); + if (error) + return "request." + error; + } + if (message.cancelAfterRows != null && message.hasOwnProperty("cancelAfterRows")) + if (!$util.isInteger(message.cancelAfterRows)) + return "cancelAfterRows: integer expected"; + return null; + }; + + /** + * Creates a ReadRowsRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.ReadRowsRequest} ReadRowsRequest + */ + ReadRowsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.ReadRowsRequest) + return object; + var message = new $root.google.bigtable.testproxy.ReadRowsRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.request != null) { + if (typeof object.request !== "object") + throw TypeError(".google.bigtable.testproxy.ReadRowsRequest.request: object expected"); + message.request = $root.google.bigtable.v2.ReadRowsRequest.fromObject(object.request); + } + if (object.cancelAfterRows != null) + message.cancelAfterRows = object.cancelAfterRows | 0; + return message; + }; + + /** + * Creates a plain object from a ReadRowsRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {google.bigtable.testproxy.ReadRowsRequest} message ReadRowsRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadRowsRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.request = null; + object.cancelAfterRows = 0; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.request != null && message.hasOwnProperty("request")) + object.request = $root.google.bigtable.v2.ReadRowsRequest.toObject(message.request, options); + if (message.cancelAfterRows != null && message.hasOwnProperty("cancelAfterRows")) + object.cancelAfterRows = message.cancelAfterRows; + return object; + }; + + /** + * Converts this ReadRowsRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @instance + * @returns {Object.} JSON object + */ + ReadRowsRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ReadRowsRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.ReadRowsRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadRowsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.ReadRowsRequest"; + }; + + return ReadRowsRequest; + })(); + + testproxy.RowsResult = (function() { + + /** + * Properties of a RowsResult. + * @memberof google.bigtable.testproxy + * @interface IRowsResult + * @property {google.rpc.IStatus|null} [status] RowsResult status + * @property {Array.|null} [rows] RowsResult rows + */ + + /** + * Constructs a new RowsResult. + * @memberof google.bigtable.testproxy + * @classdesc Represents a RowsResult. + * @implements IRowsResult + * @constructor + * @param {google.bigtable.testproxy.IRowsResult=} [properties] Properties to set + */ + function RowsResult(properties) { + this.rows = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RowsResult status. + * @member {google.rpc.IStatus|null|undefined} status + * @memberof google.bigtable.testproxy.RowsResult + * @instance + */ + RowsResult.prototype.status = null; + + /** + * RowsResult rows. + * @member {Array.} rows + * @memberof google.bigtable.testproxy.RowsResult + * @instance + */ + RowsResult.prototype.rows = $util.emptyArray; + + /** + * Creates a new RowsResult instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {google.bigtable.testproxy.IRowsResult=} [properties] Properties to set + * @returns {google.bigtable.testproxy.RowsResult} RowsResult instance + */ + RowsResult.create = function create(properties) { + return new RowsResult(properties); + }; + + /** + * Encodes the specified RowsResult message. Does not implicitly {@link google.bigtable.testproxy.RowsResult.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {google.bigtable.testproxy.IRowsResult} message RowsResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RowsResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && Object.hasOwnProperty.call(message, "status")) + $root.google.rpc.Status.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.rows != null && message.rows.length) + for (var i = 0; i < message.rows.length; ++i) + $root.google.bigtable.v2.Row.encode(message.rows[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified RowsResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.RowsResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {google.bigtable.testproxy.IRowsResult} message RowsResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RowsResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RowsResult message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.RowsResult} RowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RowsResult.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.RowsResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + case 2: { + if (!(message.rows && message.rows.length)) + message.rows = []; + message.rows.push($root.google.bigtable.v2.Row.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RowsResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.RowsResult} RowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RowsResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RowsResult message. + * @function verify + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RowsResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) { + var error = $root.google.rpc.Status.verify(message.status); + if (error) + return "status." + error; + } + if (message.rows != null && message.hasOwnProperty("rows")) { + if (!Array.isArray(message.rows)) + return "rows: array expected"; + for (var i = 0; i < message.rows.length; ++i) { + var error = $root.google.bigtable.v2.Row.verify(message.rows[i]); + if (error) + return "rows." + error; + } + } + return null; + }; + + /** + * Creates a RowsResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.RowsResult} RowsResult + */ + RowsResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.RowsResult) + return object; + var message = new $root.google.bigtable.testproxy.RowsResult(); + if (object.status != null) { + if (typeof object.status !== "object") + throw TypeError(".google.bigtable.testproxy.RowsResult.status: object expected"); + message.status = $root.google.rpc.Status.fromObject(object.status); + } + if (object.rows) { + if (!Array.isArray(object.rows)) + throw TypeError(".google.bigtable.testproxy.RowsResult.rows: array expected"); + message.rows = []; + for (var i = 0; i < object.rows.length; ++i) { + if (typeof object.rows[i] !== "object") + throw TypeError(".google.bigtable.testproxy.RowsResult.rows: object expected"); + message.rows[i] = $root.google.bigtable.v2.Row.fromObject(object.rows[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a RowsResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {google.bigtable.testproxy.RowsResult} message RowsResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RowsResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.rows = []; + if (options.defaults) + object.status = null; + if (message.status != null && message.hasOwnProperty("status")) + object.status = $root.google.rpc.Status.toObject(message.status, options); + if (message.rows && message.rows.length) { + object.rows = []; + for (var j = 0; j < message.rows.length; ++j) + object.rows[j] = $root.google.bigtable.v2.Row.toObject(message.rows[j], options); + } + return object; + }; + + /** + * Converts this RowsResult to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.RowsResult + * @instance + * @returns {Object.} JSON object + */ + RowsResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for RowsResult + * @function getTypeUrl + * @memberof google.bigtable.testproxy.RowsResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + RowsResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.RowsResult"; + }; + + return RowsResult; + })(); + + testproxy.MutateRowRequest = (function() { + + /** + * Properties of a MutateRowRequest. + * @memberof google.bigtable.testproxy + * @interface IMutateRowRequest + * @property {string|null} [clientId] MutateRowRequest clientId + * @property {google.bigtable.v2.IMutateRowRequest|null} [request] MutateRowRequest request + */ + + /** + * Constructs a new MutateRowRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a MutateRowRequest. + * @implements IMutateRowRequest + * @constructor + * @param {google.bigtable.testproxy.IMutateRowRequest=} [properties] Properties to set + */ + function MutateRowRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MutateRowRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.MutateRowRequest + * @instance + */ + MutateRowRequest.prototype.clientId = ""; + + /** + * MutateRowRequest request. + * @member {google.bigtable.v2.IMutateRowRequest|null|undefined} request + * @memberof google.bigtable.testproxy.MutateRowRequest + * @instance + */ + MutateRowRequest.prototype.request = null; + + /** + * Creates a new MutateRowRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {google.bigtable.testproxy.IMutateRowRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.MutateRowRequest} MutateRowRequest instance + */ + MutateRowRequest.create = function create(properties) { + return new MutateRowRequest(properties); + }; + + /** + * Encodes the specified MutateRowRequest message. Does not implicitly {@link google.bigtable.testproxy.MutateRowRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {google.bigtable.testproxy.IMutateRowRequest} message MutateRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.request != null && Object.hasOwnProperty.call(message, "request")) + $root.google.bigtable.v2.MutateRowRequest.encode(message.request, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MutateRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {google.bigtable.testproxy.IMutateRowRequest} message MutateRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MutateRowRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.MutateRowRequest} MutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.MutateRowRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.request = $root.google.bigtable.v2.MutateRowRequest.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MutateRowRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.MutateRowRequest} MutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MutateRowRequest message. + * @function verify + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MutateRowRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.request != null && message.hasOwnProperty("request")) { + var error = $root.google.bigtable.v2.MutateRowRequest.verify(message.request); + if (error) + return "request." + error; + } + return null; + }; + + /** + * Creates a MutateRowRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.MutateRowRequest} MutateRowRequest + */ + MutateRowRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.MutateRowRequest) + return object; + var message = new $root.google.bigtable.testproxy.MutateRowRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.request != null) { + if (typeof object.request !== "object") + throw TypeError(".google.bigtable.testproxy.MutateRowRequest.request: object expected"); + message.request = $root.google.bigtable.v2.MutateRowRequest.fromObject(object.request); + } + return message; + }; + + /** + * Creates a plain object from a MutateRowRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {google.bigtable.testproxy.MutateRowRequest} message MutateRowRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MutateRowRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.request = null; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.request != null && message.hasOwnProperty("request")) + object.request = $root.google.bigtable.v2.MutateRowRequest.toObject(message.request, options); + return object; + }; + + /** + * Converts this MutateRowRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.MutateRowRequest + * @instance + * @returns {Object.} JSON object + */ + MutateRowRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for MutateRowRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.MutateRowRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MutateRowRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.MutateRowRequest"; + }; + + return MutateRowRequest; + })(); + + testproxy.MutateRowResult = (function() { + + /** + * Properties of a MutateRowResult. + * @memberof google.bigtable.testproxy + * @interface IMutateRowResult + * @property {google.rpc.IStatus|null} [status] MutateRowResult status + */ + + /** + * Constructs a new MutateRowResult. + * @memberof google.bigtable.testproxy + * @classdesc Represents a MutateRowResult. + * @implements IMutateRowResult + * @constructor + * @param {google.bigtable.testproxy.IMutateRowResult=} [properties] Properties to set + */ + function MutateRowResult(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MutateRowResult status. + * @member {google.rpc.IStatus|null|undefined} status + * @memberof google.bigtable.testproxy.MutateRowResult + * @instance + */ + MutateRowResult.prototype.status = null; + + /** + * Creates a new MutateRowResult instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {google.bigtable.testproxy.IMutateRowResult=} [properties] Properties to set + * @returns {google.bigtable.testproxy.MutateRowResult} MutateRowResult instance + */ + MutateRowResult.create = function create(properties) { + return new MutateRowResult(properties); + }; + + /** + * Encodes the specified MutateRowResult message. Does not implicitly {@link google.bigtable.testproxy.MutateRowResult.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {google.bigtable.testproxy.IMutateRowResult} message MutateRowResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && Object.hasOwnProperty.call(message, "status")) + $root.google.rpc.Status.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MutateRowResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {google.bigtable.testproxy.IMutateRowResult} message MutateRowResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MutateRowResult message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.MutateRowResult} MutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowResult.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.MutateRowResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MutateRowResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.MutateRowResult} MutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MutateRowResult message. + * @function verify + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MutateRowResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) { + var error = $root.google.rpc.Status.verify(message.status); + if (error) + return "status." + error; + } + return null; + }; + + /** + * Creates a MutateRowResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.MutateRowResult} MutateRowResult + */ + MutateRowResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.MutateRowResult) + return object; + var message = new $root.google.bigtable.testproxy.MutateRowResult(); + if (object.status != null) { + if (typeof object.status !== "object") + throw TypeError(".google.bigtable.testproxy.MutateRowResult.status: object expected"); + message.status = $root.google.rpc.Status.fromObject(object.status); + } + return message; + }; + + /** + * Creates a plain object from a MutateRowResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {google.bigtable.testproxy.MutateRowResult} message MutateRowResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MutateRowResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.status = null; + if (message.status != null && message.hasOwnProperty("status")) + object.status = $root.google.rpc.Status.toObject(message.status, options); + return object; + }; + + /** + * Converts this MutateRowResult to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.MutateRowResult + * @instance + * @returns {Object.} JSON object + */ + MutateRowResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for MutateRowResult + * @function getTypeUrl + * @memberof google.bigtable.testproxy.MutateRowResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MutateRowResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.MutateRowResult"; + }; + + return MutateRowResult; + })(); + + testproxy.MutateRowsRequest = (function() { + + /** + * Properties of a MutateRowsRequest. + * @memberof google.bigtable.testproxy + * @interface IMutateRowsRequest + * @property {string|null} [clientId] MutateRowsRequest clientId + * @property {google.bigtable.v2.IMutateRowsRequest|null} [request] MutateRowsRequest request + */ + + /** + * Constructs a new MutateRowsRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a MutateRowsRequest. + * @implements IMutateRowsRequest + * @constructor + * @param {google.bigtable.testproxy.IMutateRowsRequest=} [properties] Properties to set + */ + function MutateRowsRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MutateRowsRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @instance + */ + MutateRowsRequest.prototype.clientId = ""; + + /** + * MutateRowsRequest request. + * @member {google.bigtable.v2.IMutateRowsRequest|null|undefined} request + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @instance + */ + MutateRowsRequest.prototype.request = null; + + /** + * Creates a new MutateRowsRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {google.bigtable.testproxy.IMutateRowsRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.MutateRowsRequest} MutateRowsRequest instance + */ + MutateRowsRequest.create = function create(properties) { + return new MutateRowsRequest(properties); + }; + + /** + * Encodes the specified MutateRowsRequest message. Does not implicitly {@link google.bigtable.testproxy.MutateRowsRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {google.bigtable.testproxy.IMutateRowsRequest} message MutateRowsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowsRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.request != null && Object.hasOwnProperty.call(message, "request")) + $root.google.bigtable.v2.MutateRowsRequest.encode(message.request, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MutateRowsRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowsRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {google.bigtable.testproxy.IMutateRowsRequest} message MutateRowsRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowsRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MutateRowsRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.MutateRowsRequest} MutateRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowsRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.MutateRowsRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.request = $root.google.bigtable.v2.MutateRowsRequest.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MutateRowsRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.MutateRowsRequest} MutateRowsRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowsRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MutateRowsRequest message. + * @function verify + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MutateRowsRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.request != null && message.hasOwnProperty("request")) { + var error = $root.google.bigtable.v2.MutateRowsRequest.verify(message.request); + if (error) + return "request." + error; + } + return null; + }; + + /** + * Creates a MutateRowsRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.MutateRowsRequest} MutateRowsRequest + */ + MutateRowsRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.MutateRowsRequest) + return object; + var message = new $root.google.bigtable.testproxy.MutateRowsRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.request != null) { + if (typeof object.request !== "object") + throw TypeError(".google.bigtable.testproxy.MutateRowsRequest.request: object expected"); + message.request = $root.google.bigtable.v2.MutateRowsRequest.fromObject(object.request); + } + return message; + }; + + /** + * Creates a plain object from a MutateRowsRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {google.bigtable.testproxy.MutateRowsRequest} message MutateRowsRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MutateRowsRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.request = null; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.request != null && message.hasOwnProperty("request")) + object.request = $root.google.bigtable.v2.MutateRowsRequest.toObject(message.request, options); + return object; + }; + + /** + * Converts this MutateRowsRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @instance + * @returns {Object.} JSON object + */ + MutateRowsRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for MutateRowsRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.MutateRowsRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MutateRowsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.MutateRowsRequest"; + }; + + return MutateRowsRequest; + })(); + + testproxy.MutateRowsResult = (function() { + + /** + * Properties of a MutateRowsResult. + * @memberof google.bigtable.testproxy + * @interface IMutateRowsResult + * @property {google.rpc.IStatus|null} [status] MutateRowsResult status + * @property {Array.|null} [entries] MutateRowsResult entries + */ + + /** + * Constructs a new MutateRowsResult. + * @memberof google.bigtable.testproxy + * @classdesc Represents a MutateRowsResult. + * @implements IMutateRowsResult + * @constructor + * @param {google.bigtable.testproxy.IMutateRowsResult=} [properties] Properties to set + */ + function MutateRowsResult(properties) { + this.entries = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MutateRowsResult status. + * @member {google.rpc.IStatus|null|undefined} status + * @memberof google.bigtable.testproxy.MutateRowsResult + * @instance + */ + MutateRowsResult.prototype.status = null; + + /** + * MutateRowsResult entries. + * @member {Array.} entries + * @memberof google.bigtable.testproxy.MutateRowsResult + * @instance + */ + MutateRowsResult.prototype.entries = $util.emptyArray; + + /** + * Creates a new MutateRowsResult instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {google.bigtable.testproxy.IMutateRowsResult=} [properties] Properties to set + * @returns {google.bigtable.testproxy.MutateRowsResult} MutateRowsResult instance + */ + MutateRowsResult.create = function create(properties) { + return new MutateRowsResult(properties); + }; + + /** + * Encodes the specified MutateRowsResult message. Does not implicitly {@link google.bigtable.testproxy.MutateRowsResult.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {google.bigtable.testproxy.IMutateRowsResult} message MutateRowsResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowsResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && Object.hasOwnProperty.call(message, "status")) + $root.google.rpc.Status.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.entries != null && message.entries.length) + for (var i = 0; i < message.entries.length; ++i) + $root.google.bigtable.v2.MutateRowsResponse.Entry.encode(message.entries[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MutateRowsResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.MutateRowsResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {google.bigtable.testproxy.IMutateRowsResult} message MutateRowsResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MutateRowsResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MutateRowsResult message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.MutateRowsResult} MutateRowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowsResult.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.MutateRowsResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + case 2: { + if (!(message.entries && message.entries.length)) + message.entries = []; + message.entries.push($root.google.bigtable.v2.MutateRowsResponse.Entry.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MutateRowsResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.MutateRowsResult} MutateRowsResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MutateRowsResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MutateRowsResult message. + * @function verify + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MutateRowsResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) { + var error = $root.google.rpc.Status.verify(message.status); + if (error) + return "status." + error; + } + if (message.entries != null && message.hasOwnProperty("entries")) { + if (!Array.isArray(message.entries)) + return "entries: array expected"; + for (var i = 0; i < message.entries.length; ++i) { + var error = $root.google.bigtable.v2.MutateRowsResponse.Entry.verify(message.entries[i]); + if (error) + return "entries." + error; + } + } + return null; + }; + + /** + * Creates a MutateRowsResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.MutateRowsResult} MutateRowsResult + */ + MutateRowsResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.MutateRowsResult) + return object; + var message = new $root.google.bigtable.testproxy.MutateRowsResult(); + if (object.status != null) { + if (typeof object.status !== "object") + throw TypeError(".google.bigtable.testproxy.MutateRowsResult.status: object expected"); + message.status = $root.google.rpc.Status.fromObject(object.status); + } + if (object.entries) { + if (!Array.isArray(object.entries)) + throw TypeError(".google.bigtable.testproxy.MutateRowsResult.entries: array expected"); + message.entries = []; + for (var i = 0; i < object.entries.length; ++i) { + if (typeof object.entries[i] !== "object") + throw TypeError(".google.bigtable.testproxy.MutateRowsResult.entries: object expected"); + message.entries[i] = $root.google.bigtable.v2.MutateRowsResponse.Entry.fromObject(object.entries[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a MutateRowsResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {google.bigtable.testproxy.MutateRowsResult} message MutateRowsResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MutateRowsResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.entries = []; + if (options.defaults) + object.status = null; + if (message.status != null && message.hasOwnProperty("status")) + object.status = $root.google.rpc.Status.toObject(message.status, options); + if (message.entries && message.entries.length) { + object.entries = []; + for (var j = 0; j < message.entries.length; ++j) + object.entries[j] = $root.google.bigtable.v2.MutateRowsResponse.Entry.toObject(message.entries[j], options); + } + return object; + }; + + /** + * Converts this MutateRowsResult to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.MutateRowsResult + * @instance + * @returns {Object.} JSON object + */ + MutateRowsResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for MutateRowsResult + * @function getTypeUrl + * @memberof google.bigtable.testproxy.MutateRowsResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + MutateRowsResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.MutateRowsResult"; + }; + + return MutateRowsResult; + })(); + + testproxy.CheckAndMutateRowRequest = (function() { + + /** + * Properties of a CheckAndMutateRowRequest. + * @memberof google.bigtable.testproxy + * @interface ICheckAndMutateRowRequest + * @property {string|null} [clientId] CheckAndMutateRowRequest clientId + * @property {google.bigtable.v2.ICheckAndMutateRowRequest|null} [request] CheckAndMutateRowRequest request + */ + + /** + * Constructs a new CheckAndMutateRowRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a CheckAndMutateRowRequest. + * @implements ICheckAndMutateRowRequest + * @constructor + * @param {google.bigtable.testproxy.ICheckAndMutateRowRequest=} [properties] Properties to set + */ + function CheckAndMutateRowRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CheckAndMutateRowRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @instance + */ + CheckAndMutateRowRequest.prototype.clientId = ""; + + /** + * CheckAndMutateRowRequest request. + * @member {google.bigtable.v2.ICheckAndMutateRowRequest|null|undefined} request + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @instance + */ + CheckAndMutateRowRequest.prototype.request = null; + + /** + * Creates a new CheckAndMutateRowRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {google.bigtable.testproxy.ICheckAndMutateRowRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.CheckAndMutateRowRequest} CheckAndMutateRowRequest instance + */ + CheckAndMutateRowRequest.create = function create(properties) { + return new CheckAndMutateRowRequest(properties); + }; + + /** + * Encodes the specified CheckAndMutateRowRequest message. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {google.bigtable.testproxy.ICheckAndMutateRowRequest} message CheckAndMutateRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CheckAndMutateRowRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.request != null && Object.hasOwnProperty.call(message, "request")) + $root.google.bigtable.v2.CheckAndMutateRowRequest.encode(message.request, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified CheckAndMutateRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {google.bigtable.testproxy.ICheckAndMutateRowRequest} message CheckAndMutateRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CheckAndMutateRowRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CheckAndMutateRowRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.CheckAndMutateRowRequest} CheckAndMutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CheckAndMutateRowRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.CheckAndMutateRowRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.request = $root.google.bigtable.v2.CheckAndMutateRowRequest.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CheckAndMutateRowRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.CheckAndMutateRowRequest} CheckAndMutateRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CheckAndMutateRowRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CheckAndMutateRowRequest message. + * @function verify + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CheckAndMutateRowRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.request != null && message.hasOwnProperty("request")) { + var error = $root.google.bigtable.v2.CheckAndMutateRowRequest.verify(message.request); + if (error) + return "request." + error; + } + return null; + }; + + /** + * Creates a CheckAndMutateRowRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.CheckAndMutateRowRequest} CheckAndMutateRowRequest + */ + CheckAndMutateRowRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.CheckAndMutateRowRequest) + return object; + var message = new $root.google.bigtable.testproxy.CheckAndMutateRowRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.request != null) { + if (typeof object.request !== "object") + throw TypeError(".google.bigtable.testproxy.CheckAndMutateRowRequest.request: object expected"); + message.request = $root.google.bigtable.v2.CheckAndMutateRowRequest.fromObject(object.request); + } + return message; + }; + + /** + * Creates a plain object from a CheckAndMutateRowRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {google.bigtable.testproxy.CheckAndMutateRowRequest} message CheckAndMutateRowRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CheckAndMutateRowRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.request = null; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.request != null && message.hasOwnProperty("request")) + object.request = $root.google.bigtable.v2.CheckAndMutateRowRequest.toObject(message.request, options); + return object; + }; + + /** + * Converts this CheckAndMutateRowRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @instance + * @returns {Object.} JSON object + */ + CheckAndMutateRowRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CheckAndMutateRowRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.CheckAndMutateRowRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CheckAndMutateRowRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.CheckAndMutateRowRequest"; + }; + + return CheckAndMutateRowRequest; + })(); + + testproxy.CheckAndMutateRowResult = (function() { + + /** + * Properties of a CheckAndMutateRowResult. + * @memberof google.bigtable.testproxy + * @interface ICheckAndMutateRowResult + * @property {google.rpc.IStatus|null} [status] CheckAndMutateRowResult status + * @property {google.bigtable.v2.ICheckAndMutateRowResponse|null} [result] CheckAndMutateRowResult result + */ + + /** + * Constructs a new CheckAndMutateRowResult. + * @memberof google.bigtable.testproxy + * @classdesc Represents a CheckAndMutateRowResult. + * @implements ICheckAndMutateRowResult + * @constructor + * @param {google.bigtable.testproxy.ICheckAndMutateRowResult=} [properties] Properties to set + */ + function CheckAndMutateRowResult(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CheckAndMutateRowResult status. + * @member {google.rpc.IStatus|null|undefined} status + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @instance + */ + CheckAndMutateRowResult.prototype.status = null; + + /** + * CheckAndMutateRowResult result. + * @member {google.bigtable.v2.ICheckAndMutateRowResponse|null|undefined} result + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @instance + */ + CheckAndMutateRowResult.prototype.result = null; + + /** + * Creates a new CheckAndMutateRowResult instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {google.bigtable.testproxy.ICheckAndMutateRowResult=} [properties] Properties to set + * @returns {google.bigtable.testproxy.CheckAndMutateRowResult} CheckAndMutateRowResult instance + */ + CheckAndMutateRowResult.create = function create(properties) { + return new CheckAndMutateRowResult(properties); + }; + + /** + * Encodes the specified CheckAndMutateRowResult message. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowResult.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {google.bigtable.testproxy.ICheckAndMutateRowResult} message CheckAndMutateRowResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CheckAndMutateRowResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && Object.hasOwnProperty.call(message, "status")) + $root.google.rpc.Status.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.result != null && Object.hasOwnProperty.call(message, "result")) + $root.google.bigtable.v2.CheckAndMutateRowResponse.encode(message.result, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified CheckAndMutateRowResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.CheckAndMutateRowResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {google.bigtable.testproxy.ICheckAndMutateRowResult} message CheckAndMutateRowResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CheckAndMutateRowResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CheckAndMutateRowResult message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.CheckAndMutateRowResult} CheckAndMutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CheckAndMutateRowResult.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.CheckAndMutateRowResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + case 2: { + message.result = $root.google.bigtable.v2.CheckAndMutateRowResponse.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CheckAndMutateRowResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.CheckAndMutateRowResult} CheckAndMutateRowResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CheckAndMutateRowResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CheckAndMutateRowResult message. + * @function verify + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CheckAndMutateRowResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) { + var error = $root.google.rpc.Status.verify(message.status); + if (error) + return "status." + error; + } + if (message.result != null && message.hasOwnProperty("result")) { + var error = $root.google.bigtable.v2.CheckAndMutateRowResponse.verify(message.result); + if (error) + return "result." + error; + } + return null; + }; + + /** + * Creates a CheckAndMutateRowResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.CheckAndMutateRowResult} CheckAndMutateRowResult + */ + CheckAndMutateRowResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.CheckAndMutateRowResult) + return object; + var message = new $root.google.bigtable.testproxy.CheckAndMutateRowResult(); + if (object.status != null) { + if (typeof object.status !== "object") + throw TypeError(".google.bigtable.testproxy.CheckAndMutateRowResult.status: object expected"); + message.status = $root.google.rpc.Status.fromObject(object.status); + } + if (object.result != null) { + if (typeof object.result !== "object") + throw TypeError(".google.bigtable.testproxy.CheckAndMutateRowResult.result: object expected"); + message.result = $root.google.bigtable.v2.CheckAndMutateRowResponse.fromObject(object.result); + } + return message; + }; + + /** + * Creates a plain object from a CheckAndMutateRowResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {google.bigtable.testproxy.CheckAndMutateRowResult} message CheckAndMutateRowResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CheckAndMutateRowResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.status = null; + object.result = null; + } + if (message.status != null && message.hasOwnProperty("status")) + object.status = $root.google.rpc.Status.toObject(message.status, options); + if (message.result != null && message.hasOwnProperty("result")) + object.result = $root.google.bigtable.v2.CheckAndMutateRowResponse.toObject(message.result, options); + return object; + }; + + /** + * Converts this CheckAndMutateRowResult to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @instance + * @returns {Object.} JSON object + */ + CheckAndMutateRowResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for CheckAndMutateRowResult + * @function getTypeUrl + * @memberof google.bigtable.testproxy.CheckAndMutateRowResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + CheckAndMutateRowResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.CheckAndMutateRowResult"; + }; + + return CheckAndMutateRowResult; + })(); + + testproxy.SampleRowKeysRequest = (function() { + + /** + * Properties of a SampleRowKeysRequest. + * @memberof google.bigtable.testproxy + * @interface ISampleRowKeysRequest + * @property {string|null} [clientId] SampleRowKeysRequest clientId + * @property {google.bigtable.v2.ISampleRowKeysRequest|null} [request] SampleRowKeysRequest request + */ + + /** + * Constructs a new SampleRowKeysRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a SampleRowKeysRequest. + * @implements ISampleRowKeysRequest + * @constructor + * @param {google.bigtable.testproxy.ISampleRowKeysRequest=} [properties] Properties to set + */ + function SampleRowKeysRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SampleRowKeysRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @instance + */ + SampleRowKeysRequest.prototype.clientId = ""; + + /** + * SampleRowKeysRequest request. + * @member {google.bigtable.v2.ISampleRowKeysRequest|null|undefined} request + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @instance + */ + SampleRowKeysRequest.prototype.request = null; + + /** + * Creates a new SampleRowKeysRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {google.bigtable.testproxy.ISampleRowKeysRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.SampleRowKeysRequest} SampleRowKeysRequest instance + */ + SampleRowKeysRequest.create = function create(properties) { + return new SampleRowKeysRequest(properties); + }; + + /** + * Encodes the specified SampleRowKeysRequest message. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {google.bigtable.testproxy.ISampleRowKeysRequest} message SampleRowKeysRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SampleRowKeysRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.request != null && Object.hasOwnProperty.call(message, "request")) + $root.google.bigtable.v2.SampleRowKeysRequest.encode(message.request, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SampleRowKeysRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {google.bigtable.testproxy.ISampleRowKeysRequest} message SampleRowKeysRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SampleRowKeysRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SampleRowKeysRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.SampleRowKeysRequest} SampleRowKeysRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SampleRowKeysRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.SampleRowKeysRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.request = $root.google.bigtable.v2.SampleRowKeysRequest.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SampleRowKeysRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.SampleRowKeysRequest} SampleRowKeysRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SampleRowKeysRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SampleRowKeysRequest message. + * @function verify + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SampleRowKeysRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.request != null && message.hasOwnProperty("request")) { + var error = $root.google.bigtable.v2.SampleRowKeysRequest.verify(message.request); + if (error) + return "request." + error; + } + return null; + }; + + /** + * Creates a SampleRowKeysRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.SampleRowKeysRequest} SampleRowKeysRequest + */ + SampleRowKeysRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.SampleRowKeysRequest) + return object; + var message = new $root.google.bigtable.testproxy.SampleRowKeysRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.request != null) { + if (typeof object.request !== "object") + throw TypeError(".google.bigtable.testproxy.SampleRowKeysRequest.request: object expected"); + message.request = $root.google.bigtable.v2.SampleRowKeysRequest.fromObject(object.request); + } + return message; + }; + + /** + * Creates a plain object from a SampleRowKeysRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {google.bigtable.testproxy.SampleRowKeysRequest} message SampleRowKeysRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SampleRowKeysRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.request = null; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.request != null && message.hasOwnProperty("request")) + object.request = $root.google.bigtable.v2.SampleRowKeysRequest.toObject(message.request, options); + return object; + }; + + /** + * Converts this SampleRowKeysRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @instance + * @returns {Object.} JSON object + */ + SampleRowKeysRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for SampleRowKeysRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.SampleRowKeysRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + SampleRowKeysRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.SampleRowKeysRequest"; + }; + + return SampleRowKeysRequest; + })(); + + testproxy.SampleRowKeysResult = (function() { + + /** + * Properties of a SampleRowKeysResult. + * @memberof google.bigtable.testproxy + * @interface ISampleRowKeysResult + * @property {google.rpc.IStatus|null} [status] SampleRowKeysResult status + * @property {Array.|null} [samples] SampleRowKeysResult samples + */ + + /** + * Constructs a new SampleRowKeysResult. + * @memberof google.bigtable.testproxy + * @classdesc Represents a SampleRowKeysResult. + * @implements ISampleRowKeysResult + * @constructor + * @param {google.bigtable.testproxy.ISampleRowKeysResult=} [properties] Properties to set + */ + function SampleRowKeysResult(properties) { + this.samples = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SampleRowKeysResult status. + * @member {google.rpc.IStatus|null|undefined} status + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @instance + */ + SampleRowKeysResult.prototype.status = null; + + /** + * SampleRowKeysResult samples. + * @member {Array.} samples + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @instance + */ + SampleRowKeysResult.prototype.samples = $util.emptyArray; + + /** + * Creates a new SampleRowKeysResult instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {google.bigtable.testproxy.ISampleRowKeysResult=} [properties] Properties to set + * @returns {google.bigtable.testproxy.SampleRowKeysResult} SampleRowKeysResult instance + */ + SampleRowKeysResult.create = function create(properties) { + return new SampleRowKeysResult(properties); + }; + + /** + * Encodes the specified SampleRowKeysResult message. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysResult.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {google.bigtable.testproxy.ISampleRowKeysResult} message SampleRowKeysResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SampleRowKeysResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && Object.hasOwnProperty.call(message, "status")) + $root.google.rpc.Status.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.samples != null && message.samples.length) + for (var i = 0; i < message.samples.length; ++i) + $root.google.bigtable.v2.SampleRowKeysResponse.encode(message.samples[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SampleRowKeysResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.SampleRowKeysResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {google.bigtable.testproxy.ISampleRowKeysResult} message SampleRowKeysResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SampleRowKeysResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SampleRowKeysResult message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.SampleRowKeysResult} SampleRowKeysResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SampleRowKeysResult.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.SampleRowKeysResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + case 2: { + if (!(message.samples && message.samples.length)) + message.samples = []; + message.samples.push($root.google.bigtable.v2.SampleRowKeysResponse.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SampleRowKeysResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.SampleRowKeysResult} SampleRowKeysResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SampleRowKeysResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SampleRowKeysResult message. + * @function verify + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SampleRowKeysResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) { + var error = $root.google.rpc.Status.verify(message.status); + if (error) + return "status." + error; + } + if (message.samples != null && message.hasOwnProperty("samples")) { + if (!Array.isArray(message.samples)) + return "samples: array expected"; + for (var i = 0; i < message.samples.length; ++i) { + var error = $root.google.bigtable.v2.SampleRowKeysResponse.verify(message.samples[i]); + if (error) + return "samples." + error; + } + } + return null; + }; + + /** + * Creates a SampleRowKeysResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.SampleRowKeysResult} SampleRowKeysResult + */ + SampleRowKeysResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.SampleRowKeysResult) + return object; + var message = new $root.google.bigtable.testproxy.SampleRowKeysResult(); + if (object.status != null) { + if (typeof object.status !== "object") + throw TypeError(".google.bigtable.testproxy.SampleRowKeysResult.status: object expected"); + message.status = $root.google.rpc.Status.fromObject(object.status); + } + if (object.samples) { + if (!Array.isArray(object.samples)) + throw TypeError(".google.bigtable.testproxy.SampleRowKeysResult.samples: array expected"); + message.samples = []; + for (var i = 0; i < object.samples.length; ++i) { + if (typeof object.samples[i] !== "object") + throw TypeError(".google.bigtable.testproxy.SampleRowKeysResult.samples: object expected"); + message.samples[i] = $root.google.bigtable.v2.SampleRowKeysResponse.fromObject(object.samples[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a SampleRowKeysResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {google.bigtable.testproxy.SampleRowKeysResult} message SampleRowKeysResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SampleRowKeysResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.samples = []; + if (options.defaults) + object.status = null; + if (message.status != null && message.hasOwnProperty("status")) + object.status = $root.google.rpc.Status.toObject(message.status, options); + if (message.samples && message.samples.length) { + object.samples = []; + for (var j = 0; j < message.samples.length; ++j) + object.samples[j] = $root.google.bigtable.v2.SampleRowKeysResponse.toObject(message.samples[j], options); + } + return object; + }; + + /** + * Converts this SampleRowKeysResult to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @instance + * @returns {Object.} JSON object + */ + SampleRowKeysResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for SampleRowKeysResult + * @function getTypeUrl + * @memberof google.bigtable.testproxy.SampleRowKeysResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + SampleRowKeysResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.SampleRowKeysResult"; + }; + + return SampleRowKeysResult; + })(); + + testproxy.ReadModifyWriteRowRequest = (function() { + + /** + * Properties of a ReadModifyWriteRowRequest. + * @memberof google.bigtable.testproxy + * @interface IReadModifyWriteRowRequest + * @property {string|null} [clientId] ReadModifyWriteRowRequest clientId + * @property {google.bigtable.v2.IReadModifyWriteRowRequest|null} [request] ReadModifyWriteRowRequest request + */ + + /** + * Constructs a new ReadModifyWriteRowRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents a ReadModifyWriteRowRequest. + * @implements IReadModifyWriteRowRequest + * @constructor + * @param {google.bigtable.testproxy.IReadModifyWriteRowRequest=} [properties] Properties to set + */ + function ReadModifyWriteRowRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReadModifyWriteRowRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @instance + */ + ReadModifyWriteRowRequest.prototype.clientId = ""; + + /** + * ReadModifyWriteRowRequest request. + * @member {google.bigtable.v2.IReadModifyWriteRowRequest|null|undefined} request + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @instance + */ + ReadModifyWriteRowRequest.prototype.request = null; + + /** + * Creates a new ReadModifyWriteRowRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {google.bigtable.testproxy.IReadModifyWriteRowRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.ReadModifyWriteRowRequest} ReadModifyWriteRowRequest instance + */ + ReadModifyWriteRowRequest.create = function create(properties) { + return new ReadModifyWriteRowRequest(properties); + }; + + /** + * Encodes the specified ReadModifyWriteRowRequest message. Does not implicitly {@link google.bigtable.testproxy.ReadModifyWriteRowRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {google.bigtable.testproxy.IReadModifyWriteRowRequest} message ReadModifyWriteRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadModifyWriteRowRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.request != null && Object.hasOwnProperty.call(message, "request")) + $root.google.bigtable.v2.ReadModifyWriteRowRequest.encode(message.request, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ReadModifyWriteRowRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ReadModifyWriteRowRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {google.bigtable.testproxy.IReadModifyWriteRowRequest} message ReadModifyWriteRowRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadModifyWriteRowRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReadModifyWriteRowRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.ReadModifyWriteRowRequest} ReadModifyWriteRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadModifyWriteRowRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.ReadModifyWriteRowRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.request = $root.google.bigtable.v2.ReadModifyWriteRowRequest.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReadModifyWriteRowRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.ReadModifyWriteRowRequest} ReadModifyWriteRowRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadModifyWriteRowRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadModifyWriteRowRequest message. + * @function verify + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadModifyWriteRowRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.request != null && message.hasOwnProperty("request")) { + var error = $root.google.bigtable.v2.ReadModifyWriteRowRequest.verify(message.request); + if (error) + return "request." + error; + } + return null; + }; + + /** + * Creates a ReadModifyWriteRowRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.ReadModifyWriteRowRequest} ReadModifyWriteRowRequest + */ + ReadModifyWriteRowRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.ReadModifyWriteRowRequest) + return object; + var message = new $root.google.bigtable.testproxy.ReadModifyWriteRowRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.request != null) { + if (typeof object.request !== "object") + throw TypeError(".google.bigtable.testproxy.ReadModifyWriteRowRequest.request: object expected"); + message.request = $root.google.bigtable.v2.ReadModifyWriteRowRequest.fromObject(object.request); + } + return message; + }; + + /** + * Creates a plain object from a ReadModifyWriteRowRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {google.bigtable.testproxy.ReadModifyWriteRowRequest} message ReadModifyWriteRowRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadModifyWriteRowRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.request = null; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.request != null && message.hasOwnProperty("request")) + object.request = $root.google.bigtable.v2.ReadModifyWriteRowRequest.toObject(message.request, options); + return object; + }; + + /** + * Converts this ReadModifyWriteRowRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @instance + * @returns {Object.} JSON object + */ + ReadModifyWriteRowRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ReadModifyWriteRowRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.ReadModifyWriteRowRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadModifyWriteRowRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.ReadModifyWriteRowRequest"; + }; + + return ReadModifyWriteRowRequest; + })(); + + testproxy.ExecuteQueryRequest = (function() { + + /** + * Properties of an ExecuteQueryRequest. + * @memberof google.bigtable.testproxy + * @interface IExecuteQueryRequest + * @property {string|null} [clientId] ExecuteQueryRequest clientId + * @property {google.bigtable.v2.IExecuteQueryRequest|null} [request] ExecuteQueryRequest request + */ + + /** + * Constructs a new ExecuteQueryRequest. + * @memberof google.bigtable.testproxy + * @classdesc Represents an ExecuteQueryRequest. + * @implements IExecuteQueryRequest + * @constructor + * @param {google.bigtable.testproxy.IExecuteQueryRequest=} [properties] Properties to set + */ + function ExecuteQueryRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExecuteQueryRequest clientId. + * @member {string} clientId + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @instance + */ + ExecuteQueryRequest.prototype.clientId = ""; + + /** + * ExecuteQueryRequest request. + * @member {google.bigtable.v2.IExecuteQueryRequest|null|undefined} request + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @instance + */ + ExecuteQueryRequest.prototype.request = null; + + /** + * Creates a new ExecuteQueryRequest instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {google.bigtable.testproxy.IExecuteQueryRequest=} [properties] Properties to set + * @returns {google.bigtable.testproxy.ExecuteQueryRequest} ExecuteQueryRequest instance + */ + ExecuteQueryRequest.create = function create(properties) { + return new ExecuteQueryRequest(properties); + }; + + /** + * Encodes the specified ExecuteQueryRequest message. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryRequest.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {google.bigtable.testproxy.IExecuteQueryRequest} message ExecuteQueryRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteQueryRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientId != null && Object.hasOwnProperty.call(message, "clientId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientId); + if (message.request != null && Object.hasOwnProperty.call(message, "request")) + $root.google.bigtable.v2.ExecuteQueryRequest.encode(message.request, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExecuteQueryRequest message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {google.bigtable.testproxy.IExecuteQueryRequest} message ExecuteQueryRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteQueryRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExecuteQueryRequest message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.ExecuteQueryRequest} ExecuteQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteQueryRequest.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.ExecuteQueryRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.clientId = reader.string(); + break; + } + case 2: { + message.request = $root.google.bigtable.v2.ExecuteQueryRequest.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExecuteQueryRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.ExecuteQueryRequest} ExecuteQueryRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteQueryRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExecuteQueryRequest message. + * @function verify + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExecuteQueryRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientId != null && message.hasOwnProperty("clientId")) + if (!$util.isString(message.clientId)) + return "clientId: string expected"; + if (message.request != null && message.hasOwnProperty("request")) { + var error = $root.google.bigtable.v2.ExecuteQueryRequest.verify(message.request); + if (error) + return "request." + error; + } + return null; + }; + + /** + * Creates an ExecuteQueryRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.ExecuteQueryRequest} ExecuteQueryRequest + */ + ExecuteQueryRequest.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.ExecuteQueryRequest) + return object; + var message = new $root.google.bigtable.testproxy.ExecuteQueryRequest(); + if (object.clientId != null) + message.clientId = String(object.clientId); + if (object.request != null) { + if (typeof object.request !== "object") + throw TypeError(".google.bigtable.testproxy.ExecuteQueryRequest.request: object expected"); + message.request = $root.google.bigtable.v2.ExecuteQueryRequest.fromObject(object.request); + } + return message; + }; + + /** + * Creates a plain object from an ExecuteQueryRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {google.bigtable.testproxy.ExecuteQueryRequest} message ExecuteQueryRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExecuteQueryRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientId = ""; + object.request = null; + } + if (message.clientId != null && message.hasOwnProperty("clientId")) + object.clientId = message.clientId; + if (message.request != null && message.hasOwnProperty("request")) + object.request = $root.google.bigtable.v2.ExecuteQueryRequest.toObject(message.request, options); + return object; + }; + + /** + * Converts this ExecuteQueryRequest to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @instance + * @returns {Object.} JSON object + */ + ExecuteQueryRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ExecuteQueryRequest + * @function getTypeUrl + * @memberof google.bigtable.testproxy.ExecuteQueryRequest + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExecuteQueryRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.ExecuteQueryRequest"; + }; + + return ExecuteQueryRequest; + })(); + + testproxy.ExecuteQueryResult = (function() { + + /** + * Properties of an ExecuteQueryResult. + * @memberof google.bigtable.testproxy + * @interface IExecuteQueryResult + * @property {google.rpc.IStatus|null} [status] ExecuteQueryResult status + * @property {google.bigtable.testproxy.IResultSetMetadata|null} [metadata] ExecuteQueryResult metadata + * @property {Array.|null} [rows] ExecuteQueryResult rows + */ + + /** + * Constructs a new ExecuteQueryResult. + * @memberof google.bigtable.testproxy + * @classdesc Represents an ExecuteQueryResult. + * @implements IExecuteQueryResult + * @constructor + * @param {google.bigtable.testproxy.IExecuteQueryResult=} [properties] Properties to set + */ + function ExecuteQueryResult(properties) { + this.rows = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExecuteQueryResult status. + * @member {google.rpc.IStatus|null|undefined} status + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @instance + */ + ExecuteQueryResult.prototype.status = null; + + /** + * ExecuteQueryResult metadata. + * @member {google.bigtable.testproxy.IResultSetMetadata|null|undefined} metadata + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @instance + */ + ExecuteQueryResult.prototype.metadata = null; + + /** + * ExecuteQueryResult rows. + * @member {Array.} rows + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @instance + */ + ExecuteQueryResult.prototype.rows = $util.emptyArray; + + /** + * Creates a new ExecuteQueryResult instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {google.bigtable.testproxy.IExecuteQueryResult=} [properties] Properties to set + * @returns {google.bigtable.testproxy.ExecuteQueryResult} ExecuteQueryResult instance + */ + ExecuteQueryResult.create = function create(properties) { + return new ExecuteQueryResult(properties); + }; + + /** + * Encodes the specified ExecuteQueryResult message. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryResult.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {google.bigtable.testproxy.IExecuteQueryResult} message ExecuteQueryResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteQueryResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && Object.hasOwnProperty.call(message, "status")) + $root.google.rpc.Status.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.rows != null && message.rows.length) + for (var i = 0; i < message.rows.length; ++i) + $root.google.bigtable.testproxy.SqlRow.encode(message.rows[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.metadata != null && Object.hasOwnProperty.call(message, "metadata")) + $root.google.bigtable.testproxy.ResultSetMetadata.encode(message.metadata, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ExecuteQueryResult message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ExecuteQueryResult.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {google.bigtable.testproxy.IExecuteQueryResult} message ExecuteQueryResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteQueryResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExecuteQueryResult message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.ExecuteQueryResult} ExecuteQueryResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteQueryResult.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.ExecuteQueryResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + break; + } + case 4: { + message.metadata = $root.google.bigtable.testproxy.ResultSetMetadata.decode(reader, reader.uint32()); + break; + } + case 3: { + if (!(message.rows && message.rows.length)) + message.rows = []; + message.rows.push($root.google.bigtable.testproxy.SqlRow.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExecuteQueryResult message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.ExecuteQueryResult} ExecuteQueryResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteQueryResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExecuteQueryResult message. + * @function verify + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExecuteQueryResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) { + var error = $root.google.rpc.Status.verify(message.status); + if (error) + return "status." + error; + } + if (message.metadata != null && message.hasOwnProperty("metadata")) { + var error = $root.google.bigtable.testproxy.ResultSetMetadata.verify(message.metadata); + if (error) + return "metadata." + error; + } + if (message.rows != null && message.hasOwnProperty("rows")) { + if (!Array.isArray(message.rows)) + return "rows: array expected"; + for (var i = 0; i < message.rows.length; ++i) { + var error = $root.google.bigtable.testproxy.SqlRow.verify(message.rows[i]); + if (error) + return "rows." + error; + } + } + return null; + }; + + /** + * Creates an ExecuteQueryResult message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.ExecuteQueryResult} ExecuteQueryResult + */ + ExecuteQueryResult.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.ExecuteQueryResult) + return object; + var message = new $root.google.bigtable.testproxy.ExecuteQueryResult(); + if (object.status != null) { + if (typeof object.status !== "object") + throw TypeError(".google.bigtable.testproxy.ExecuteQueryResult.status: object expected"); + message.status = $root.google.rpc.Status.fromObject(object.status); + } + if (object.metadata != null) { + if (typeof object.metadata !== "object") + throw TypeError(".google.bigtable.testproxy.ExecuteQueryResult.metadata: object expected"); + message.metadata = $root.google.bigtable.testproxy.ResultSetMetadata.fromObject(object.metadata); + } + if (object.rows) { + if (!Array.isArray(object.rows)) + throw TypeError(".google.bigtable.testproxy.ExecuteQueryResult.rows: array expected"); + message.rows = []; + for (var i = 0; i < object.rows.length; ++i) { + if (typeof object.rows[i] !== "object") + throw TypeError(".google.bigtable.testproxy.ExecuteQueryResult.rows: object expected"); + message.rows[i] = $root.google.bigtable.testproxy.SqlRow.fromObject(object.rows[i]); + } + } + return message; + }; + + /** + * Creates a plain object from an ExecuteQueryResult message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {google.bigtable.testproxy.ExecuteQueryResult} message ExecuteQueryResult + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExecuteQueryResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.rows = []; + if (options.defaults) { + object.status = null; + object.metadata = null; + } + if (message.status != null && message.hasOwnProperty("status")) + object.status = $root.google.rpc.Status.toObject(message.status, options); + if (message.rows && message.rows.length) { + object.rows = []; + for (var j = 0; j < message.rows.length; ++j) + object.rows[j] = $root.google.bigtable.testproxy.SqlRow.toObject(message.rows[j], options); + } + if (message.metadata != null && message.hasOwnProperty("metadata")) + object.metadata = $root.google.bigtable.testproxy.ResultSetMetadata.toObject(message.metadata, options); + return object; + }; + + /** + * Converts this ExecuteQueryResult to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @instance + * @returns {Object.} JSON object + */ + ExecuteQueryResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ExecuteQueryResult + * @function getTypeUrl + * @memberof google.bigtable.testproxy.ExecuteQueryResult + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExecuteQueryResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.ExecuteQueryResult"; + }; + + return ExecuteQueryResult; + })(); + + testproxy.ResultSetMetadata = (function() { + + /** + * Properties of a ResultSetMetadata. + * @memberof google.bigtable.testproxy + * @interface IResultSetMetadata + * @property {Array.|null} [columns] ResultSetMetadata columns + */ + + /** + * Constructs a new ResultSetMetadata. + * @memberof google.bigtable.testproxy + * @classdesc Represents a ResultSetMetadata. + * @implements IResultSetMetadata + * @constructor + * @param {google.bigtable.testproxy.IResultSetMetadata=} [properties] Properties to set + */ + function ResultSetMetadata(properties) { + this.columns = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ResultSetMetadata columns. + * @member {Array.} columns + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @instance + */ + ResultSetMetadata.prototype.columns = $util.emptyArray; + + /** + * Creates a new ResultSetMetadata instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {google.bigtable.testproxy.IResultSetMetadata=} [properties] Properties to set + * @returns {google.bigtable.testproxy.ResultSetMetadata} ResultSetMetadata instance + */ + ResultSetMetadata.create = function create(properties) { + return new ResultSetMetadata(properties); + }; + + /** + * Encodes the specified ResultSetMetadata message. Does not implicitly {@link google.bigtable.testproxy.ResultSetMetadata.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {google.bigtable.testproxy.IResultSetMetadata} message ResultSetMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResultSetMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.columns != null && message.columns.length) + for (var i = 0; i < message.columns.length; ++i) + $root.google.bigtable.v2.ColumnMetadata.encode(message.columns[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ResultSetMetadata message, length delimited. Does not implicitly {@link google.bigtable.testproxy.ResultSetMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {google.bigtable.testproxy.IResultSetMetadata} message ResultSetMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResultSetMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ResultSetMetadata message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.ResultSetMetadata} ResultSetMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResultSetMetadata.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.ResultSetMetadata(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.columns && message.columns.length)) + message.columns = []; + message.columns.push($root.google.bigtable.v2.ColumnMetadata.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ResultSetMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.ResultSetMetadata} ResultSetMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResultSetMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ResultSetMetadata message. + * @function verify + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ResultSetMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.columns != null && message.hasOwnProperty("columns")) { + if (!Array.isArray(message.columns)) + return "columns: array expected"; + for (var i = 0; i < message.columns.length; ++i) { + var error = $root.google.bigtable.v2.ColumnMetadata.verify(message.columns[i]); + if (error) + return "columns." + error; + } + } + return null; + }; + + /** + * Creates a ResultSetMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.ResultSetMetadata} ResultSetMetadata + */ + ResultSetMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.ResultSetMetadata) + return object; + var message = new $root.google.bigtable.testproxy.ResultSetMetadata(); + if (object.columns) { + if (!Array.isArray(object.columns)) + throw TypeError(".google.bigtable.testproxy.ResultSetMetadata.columns: array expected"); + message.columns = []; + for (var i = 0; i < object.columns.length; ++i) { + if (typeof object.columns[i] !== "object") + throw TypeError(".google.bigtable.testproxy.ResultSetMetadata.columns: object expected"); + message.columns[i] = $root.google.bigtable.v2.ColumnMetadata.fromObject(object.columns[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a ResultSetMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {google.bigtable.testproxy.ResultSetMetadata} message ResultSetMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ResultSetMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.columns = []; + if (message.columns && message.columns.length) { + object.columns = []; + for (var j = 0; j < message.columns.length; ++j) + object.columns[j] = $root.google.bigtable.v2.ColumnMetadata.toObject(message.columns[j], options); + } + return object; + }; + + /** + * Converts this ResultSetMetadata to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @instance + * @returns {Object.} JSON object + */ + ResultSetMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ResultSetMetadata + * @function getTypeUrl + * @memberof google.bigtable.testproxy.ResultSetMetadata + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ResultSetMetadata.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.ResultSetMetadata"; + }; + + return ResultSetMetadata; + })(); + + testproxy.SqlRow = (function() { + + /** + * Properties of a SqlRow. + * @memberof google.bigtable.testproxy + * @interface ISqlRow + * @property {Array.|null} [values] SqlRow values + */ + + /** + * Constructs a new SqlRow. + * @memberof google.bigtable.testproxy + * @classdesc Represents a SqlRow. + * @implements ISqlRow + * @constructor + * @param {google.bigtable.testproxy.ISqlRow=} [properties] Properties to set + */ + function SqlRow(properties) { + this.values = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SqlRow values. + * @member {Array.} values + * @memberof google.bigtable.testproxy.SqlRow + * @instance + */ + SqlRow.prototype.values = $util.emptyArray; + + /** + * Creates a new SqlRow instance using the specified properties. + * @function create + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {google.bigtable.testproxy.ISqlRow=} [properties] Properties to set + * @returns {google.bigtable.testproxy.SqlRow} SqlRow instance + */ + SqlRow.create = function create(properties) { + return new SqlRow(properties); + }; + + /** + * Encodes the specified SqlRow message. Does not implicitly {@link google.bigtable.testproxy.SqlRow.verify|verify} messages. + * @function encode + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {google.bigtable.testproxy.ISqlRow} message SqlRow message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SqlRow.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.values != null && message.values.length) + for (var i = 0; i < message.values.length; ++i) + $root.google.bigtable.v2.Value.encode(message.values[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SqlRow message, length delimited. Does not implicitly {@link google.bigtable.testproxy.SqlRow.verify|verify} messages. + * @function encodeDelimited + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {google.bigtable.testproxy.ISqlRow} message SqlRow message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SqlRow.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SqlRow message from the specified reader or buffer. + * @function decode + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.bigtable.testproxy.SqlRow} SqlRow + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SqlRow.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.bigtable.testproxy.SqlRow(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.values && message.values.length)) + message.values = []; + message.values.push($root.google.bigtable.v2.Value.decode(reader, reader.uint32())); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SqlRow message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.bigtable.testproxy.SqlRow} SqlRow + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SqlRow.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SqlRow message. + * @function verify + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SqlRow.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.values != null && message.hasOwnProperty("values")) { + if (!Array.isArray(message.values)) + return "values: array expected"; + for (var i = 0; i < message.values.length; ++i) { + var error = $root.google.bigtable.v2.Value.verify(message.values[i]); + if (error) + return "values." + error; + } + } + return null; + }; + + /** + * Creates a SqlRow message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {Object.} object Plain object + * @returns {google.bigtable.testproxy.SqlRow} SqlRow + */ + SqlRow.fromObject = function fromObject(object) { + if (object instanceof $root.google.bigtable.testproxy.SqlRow) + return object; + var message = new $root.google.bigtable.testproxy.SqlRow(); + if (object.values) { + if (!Array.isArray(object.values)) + throw TypeError(".google.bigtable.testproxy.SqlRow.values: array expected"); + message.values = []; + for (var i = 0; i < object.values.length; ++i) { + if (typeof object.values[i] !== "object") + throw TypeError(".google.bigtable.testproxy.SqlRow.values: object expected"); + message.values[i] = $root.google.bigtable.v2.Value.fromObject(object.values[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a SqlRow message. Also converts values to other types if specified. + * @function toObject + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {google.bigtable.testproxy.SqlRow} message SqlRow + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SqlRow.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.values = []; + if (message.values && message.values.length) { + object.values = []; + for (var j = 0; j < message.values.length; ++j) + object.values[j] = $root.google.bigtable.v2.Value.toObject(message.values[j], options); + } + return object; + }; + + /** + * Converts this SqlRow to JSON. + * @function toJSON + * @memberof google.bigtable.testproxy.SqlRow + * @instance + * @returns {Object.} JSON object + */ + SqlRow.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for SqlRow + * @function getTypeUrl + * @memberof google.bigtable.testproxy.SqlRow + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + SqlRow.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.bigtable.testproxy.SqlRow"; + }; + + return SqlRow; + })(); + + testproxy.CloudBigtableV2TestProxy = (function() { + + /** + * Constructs a new CloudBigtableV2TestProxy service. + * @memberof google.bigtable.testproxy + * @classdesc Represents a CloudBigtableV2TestProxy + * @extends $protobuf.rpc.Service + * @constructor + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + */ + function CloudBigtableV2TestProxy(rpcImpl, requestDelimited, responseDelimited) { + $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited); + } + + (CloudBigtableV2TestProxy.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = CloudBigtableV2TestProxy; + + /** + * Creates new CloudBigtableV2TestProxy service using the specified rpc implementation. + * @function create + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @static + * @param {$protobuf.RPCImpl} rpcImpl RPC implementation + * @param {boolean} [requestDelimited=false] Whether requests are length-delimited + * @param {boolean} [responseDelimited=false] Whether responses are length-delimited + * @returns {CloudBigtableV2TestProxy} RPC service. Useful where requests and/or responses are streamed. + */ + CloudBigtableV2TestProxy.create = function create(rpcImpl, requestDelimited, responseDelimited) { + return new this(rpcImpl, requestDelimited, responseDelimited); + }; + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|createClient}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef CreateClientCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.CreateClientResponse} [response] CreateClientResponse + */ + + /** + * Calls CreateClient. + * @function createClient + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ICreateClientRequest} request CreateClientRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.CreateClientCallback} callback Node-style callback called with the error, if any, and CreateClientResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.createClient = function createClient(request, callback) { + return this.rpcCall(createClient, $root.google.bigtable.testproxy.CreateClientRequest, $root.google.bigtable.testproxy.CreateClientResponse, request, callback); + }, "name", { value: "CreateClient" }); + + /** + * Calls CreateClient. + * @function createClient + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ICreateClientRequest} request CreateClientRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|closeClient}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef CloseClientCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.CloseClientResponse} [response] CloseClientResponse + */ + + /** + * Calls CloseClient. + * @function closeClient + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ICloseClientRequest} request CloseClientRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.CloseClientCallback} callback Node-style callback called with the error, if any, and CloseClientResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.closeClient = function closeClient(request, callback) { + return this.rpcCall(closeClient, $root.google.bigtable.testproxy.CloseClientRequest, $root.google.bigtable.testproxy.CloseClientResponse, request, callback); + }, "name", { value: "CloseClient" }); + + /** + * Calls CloseClient. + * @function closeClient + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ICloseClientRequest} request CloseClientRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|removeClient}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef RemoveClientCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.RemoveClientResponse} [response] RemoveClientResponse + */ + + /** + * Calls RemoveClient. + * @function removeClient + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IRemoveClientRequest} request RemoveClientRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.RemoveClientCallback} callback Node-style callback called with the error, if any, and RemoveClientResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.removeClient = function removeClient(request, callback) { + return this.rpcCall(removeClient, $root.google.bigtable.testproxy.RemoveClientRequest, $root.google.bigtable.testproxy.RemoveClientResponse, request, callback); + }, "name", { value: "RemoveClient" }); + + /** + * Calls RemoveClient. + * @function removeClient + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IRemoveClientRequest} request RemoveClientRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|readRow}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef ReadRowCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.RowResult} [response] RowResult + */ + + /** + * Calls ReadRow. + * @function readRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IReadRowRequest} request ReadRowRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.ReadRowCallback} callback Node-style callback called with the error, if any, and RowResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.readRow = function readRow(request, callback) { + return this.rpcCall(readRow, $root.google.bigtable.testproxy.ReadRowRequest, $root.google.bigtable.testproxy.RowResult, request, callback); + }, "name", { value: "ReadRow" }); + + /** + * Calls ReadRow. + * @function readRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IReadRowRequest} request ReadRowRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|readRows}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef ReadRowsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.RowsResult} [response] RowsResult + */ + + /** + * Calls ReadRows. + * @function readRows + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IReadRowsRequest} request ReadRowsRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.ReadRowsCallback} callback Node-style callback called with the error, if any, and RowsResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.readRows = function readRows(request, callback) { + return this.rpcCall(readRows, $root.google.bigtable.testproxy.ReadRowsRequest, $root.google.bigtable.testproxy.RowsResult, request, callback); + }, "name", { value: "ReadRows" }); + + /** + * Calls ReadRows. + * @function readRows + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IReadRowsRequest} request ReadRowsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|mutateRow}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef MutateRowCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.MutateRowResult} [response] MutateRowResult + */ + + /** + * Calls MutateRow. + * @function mutateRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IMutateRowRequest} request MutateRowRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.MutateRowCallback} callback Node-style callback called with the error, if any, and MutateRowResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.mutateRow = function mutateRow(request, callback) { + return this.rpcCall(mutateRow, $root.google.bigtable.testproxy.MutateRowRequest, $root.google.bigtable.testproxy.MutateRowResult, request, callback); + }, "name", { value: "MutateRow" }); + + /** + * Calls MutateRow. + * @function mutateRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IMutateRowRequest} request MutateRowRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|bulkMutateRows}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef BulkMutateRowsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.MutateRowsResult} [response] MutateRowsResult + */ + + /** + * Calls BulkMutateRows. + * @function bulkMutateRows + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IMutateRowsRequest} request MutateRowsRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.BulkMutateRowsCallback} callback Node-style callback called with the error, if any, and MutateRowsResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.bulkMutateRows = function bulkMutateRows(request, callback) { + return this.rpcCall(bulkMutateRows, $root.google.bigtable.testproxy.MutateRowsRequest, $root.google.bigtable.testproxy.MutateRowsResult, request, callback); + }, "name", { value: "BulkMutateRows" }); + + /** + * Calls BulkMutateRows. + * @function bulkMutateRows + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IMutateRowsRequest} request MutateRowsRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|checkAndMutateRow}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef CheckAndMutateRowCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.CheckAndMutateRowResult} [response] CheckAndMutateRowResult + */ + + /** + * Calls CheckAndMutateRow. + * @function checkAndMutateRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ICheckAndMutateRowRequest} request CheckAndMutateRowRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.CheckAndMutateRowCallback} callback Node-style callback called with the error, if any, and CheckAndMutateRowResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.checkAndMutateRow = function checkAndMutateRow(request, callback) { + return this.rpcCall(checkAndMutateRow, $root.google.bigtable.testproxy.CheckAndMutateRowRequest, $root.google.bigtable.testproxy.CheckAndMutateRowResult, request, callback); + }, "name", { value: "CheckAndMutateRow" }); + + /** + * Calls CheckAndMutateRow. + * @function checkAndMutateRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ICheckAndMutateRowRequest} request CheckAndMutateRowRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|sampleRowKeys}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef SampleRowKeysCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.SampleRowKeysResult} [response] SampleRowKeysResult + */ + + /** + * Calls SampleRowKeys. + * @function sampleRowKeys + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ISampleRowKeysRequest} request SampleRowKeysRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.SampleRowKeysCallback} callback Node-style callback called with the error, if any, and SampleRowKeysResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.sampleRowKeys = function sampleRowKeys(request, callback) { + return this.rpcCall(sampleRowKeys, $root.google.bigtable.testproxy.SampleRowKeysRequest, $root.google.bigtable.testproxy.SampleRowKeysResult, request, callback); + }, "name", { value: "SampleRowKeys" }); + + /** + * Calls SampleRowKeys. + * @function sampleRowKeys + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.ISampleRowKeysRequest} request SampleRowKeysRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|readModifyWriteRow}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef ReadModifyWriteRowCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.RowResult} [response] RowResult + */ + + /** + * Calls ReadModifyWriteRow. + * @function readModifyWriteRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IReadModifyWriteRowRequest} request ReadModifyWriteRowRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.ReadModifyWriteRowCallback} callback Node-style callback called with the error, if any, and RowResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.readModifyWriteRow = function readModifyWriteRow(request, callback) { + return this.rpcCall(readModifyWriteRow, $root.google.bigtable.testproxy.ReadModifyWriteRowRequest, $root.google.bigtable.testproxy.RowResult, request, callback); + }, "name", { value: "ReadModifyWriteRow" }); + + /** + * Calls ReadModifyWriteRow. + * @function readModifyWriteRow + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IReadModifyWriteRowRequest} request ReadModifyWriteRowRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + /** + * Callback as used by {@link google.bigtable.testproxy.CloudBigtableV2TestProxy|executeQuery}. + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @typedef ExecuteQueryCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {google.bigtable.testproxy.ExecuteQueryResult} [response] ExecuteQueryResult + */ + + /** + * Calls ExecuteQuery. + * @function executeQuery + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IExecuteQueryRequest} request ExecuteQueryRequest message or plain object + * @param {google.bigtable.testproxy.CloudBigtableV2TestProxy.ExecuteQueryCallback} callback Node-style callback called with the error, if any, and ExecuteQueryResult + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(CloudBigtableV2TestProxy.prototype.executeQuery = function executeQuery(request, callback) { + return this.rpcCall(executeQuery, $root.google.bigtable.testproxy.ExecuteQueryRequest, $root.google.bigtable.testproxy.ExecuteQueryResult, request, callback); + }, "name", { value: "ExecuteQuery" }); + + /** + * Calls ExecuteQuery. + * @function executeQuery + * @memberof google.bigtable.testproxy.CloudBigtableV2TestProxy + * @instance + * @param {google.bigtable.testproxy.IExecuteQueryRequest} request ExecuteQueryRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + + return CloudBigtableV2TestProxy; + })(); + + return testproxy; + })(); + return bigtable; })(); diff --git a/protos/protos.json b/protos/protos.json index 7eacb803c..c01461e32 100644 --- a/protos/protos.json +++ b/protos/protos.json @@ -7454,6 +7454,369 @@ } } } + }, + "testproxy": { + "options": { + "go_package": "cloud.google.com/go/bigtable/testproxy/testproxypb;testproxypb", + "java_multiple_files": true, + "java_package": "com.google.cloud.bigtable.testproxy" + }, + "nested": { + "OptionalFeatureConfig": { + "values": { + "OPTIONAL_FEATURE_CONFIG_DEFAULT": 0, + "OPTIONAL_FEATURE_CONFIG_ENABLE_ALL": 1 + } + }, + "CreateClientRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "dataTarget": { + "type": "string", + "id": 2 + }, + "projectId": { + "type": "string", + "id": 3 + }, + "instanceId": { + "type": "string", + "id": 4 + }, + "appProfileId": { + "type": "string", + "id": 5 + }, + "perOperationTimeout": { + "type": "google.protobuf.Duration", + "id": 6 + }, + "optionalFeatureConfig": { + "type": "OptionalFeatureConfig", + "id": 7 + }, + "securityOptions": { + "type": "SecurityOptions", + "id": 8 + } + }, + "nested": { + "SecurityOptions": { + "fields": { + "accessToken": { + "type": "string", + "id": 1 + }, + "useSsl": { + "type": "bool", + "id": 2 + }, + "sslEndpointOverride": { + "type": "string", + "id": 3 + }, + "sslRootCertsPem": { + "type": "string", + "id": 4 + } + } + } + } + }, + "CreateClientResponse": { + "fields": {} + }, + "CloseClientRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + } + } + }, + "CloseClientResponse": { + "fields": {} + }, + "RemoveClientRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + } + } + }, + "RemoveClientResponse": { + "fields": {} + }, + "ReadRowRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "tableName": { + "type": "string", + "id": 4 + }, + "rowKey": { + "type": "string", + "id": 2 + }, + "filter": { + "type": "google.bigtable.v2.RowFilter", + "id": 3 + } + } + }, + "RowResult": { + "fields": { + "status": { + "type": "google.rpc.Status", + "id": 1 + }, + "row": { + "type": "google.bigtable.v2.Row", + "id": 2 + } + } + }, + "ReadRowsRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "request": { + "type": "google.bigtable.v2.ReadRowsRequest", + "id": 2 + }, + "cancelAfterRows": { + "type": "int32", + "id": 3 + } + } + }, + "RowsResult": { + "fields": { + "status": { + "type": "google.rpc.Status", + "id": 1 + }, + "rows": { + "rule": "repeated", + "type": "google.bigtable.v2.Row", + "id": 2 + } + } + }, + "MutateRowRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "request": { + "type": "google.bigtable.v2.MutateRowRequest", + "id": 2 + } + } + }, + "MutateRowResult": { + "fields": { + "status": { + "type": "google.rpc.Status", + "id": 1 + } + } + }, + "MutateRowsRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "request": { + "type": "google.bigtable.v2.MutateRowsRequest", + "id": 2 + } + } + }, + "MutateRowsResult": { + "fields": { + "status": { + "type": "google.rpc.Status", + "id": 1 + }, + "entries": { + "rule": "repeated", + "type": "google.bigtable.v2.MutateRowsResponse.Entry", + "id": 2 + } + } + }, + "CheckAndMutateRowRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "request": { + "type": "google.bigtable.v2.CheckAndMutateRowRequest", + "id": 2 + } + } + }, + "CheckAndMutateRowResult": { + "fields": { + "status": { + "type": "google.rpc.Status", + "id": 1 + }, + "result": { + "type": "google.bigtable.v2.CheckAndMutateRowResponse", + "id": 2 + } + } + }, + "SampleRowKeysRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "request": { + "type": "google.bigtable.v2.SampleRowKeysRequest", + "id": 2 + } + } + }, + "SampleRowKeysResult": { + "fields": { + "status": { + "type": "google.rpc.Status", + "id": 1 + }, + "samples": { + "rule": "repeated", + "type": "google.bigtable.v2.SampleRowKeysResponse", + "id": 2 + } + } + }, + "ReadModifyWriteRowRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "request": { + "type": "google.bigtable.v2.ReadModifyWriteRowRequest", + "id": 2 + } + } + }, + "ExecuteQueryRequest": { + "fields": { + "clientId": { + "type": "string", + "id": 1 + }, + "request": { + "type": "google.bigtable.v2.ExecuteQueryRequest", + "id": 2 + } + } + }, + "ExecuteQueryResult": { + "fields": { + "status": { + "type": "google.rpc.Status", + "id": 1 + }, + "metadata": { + "type": "ResultSetMetadata", + "id": 4 + }, + "rows": { + "rule": "repeated", + "type": "SqlRow", + "id": 3 + } + } + }, + "ResultSetMetadata": { + "fields": { + "columns": { + "rule": "repeated", + "type": "google.bigtable.v2.ColumnMetadata", + "id": 1 + } + } + }, + "SqlRow": { + "fields": { + "values": { + "rule": "repeated", + "type": "google.bigtable.v2.Value", + "id": 1 + } + } + }, + "CloudBigtableV2TestProxy": { + "options": { + "(google.api.default_host)": "bigtable-test-proxy-not-accessible.googleapis.com" + }, + "methods": { + "CreateClient": { + "requestType": "CreateClientRequest", + "responseType": "CreateClientResponse" + }, + "CloseClient": { + "requestType": "CloseClientRequest", + "responseType": "CloseClientResponse" + }, + "RemoveClient": { + "requestType": "RemoveClientRequest", + "responseType": "RemoveClientResponse" + }, + "ReadRow": { + "requestType": "ReadRowRequest", + "responseType": "RowResult" + }, + "ReadRows": { + "requestType": "ReadRowsRequest", + "responseType": "RowsResult" + }, + "MutateRow": { + "requestType": "MutateRowRequest", + "responseType": "MutateRowResult" + }, + "BulkMutateRows": { + "requestType": "MutateRowsRequest", + "responseType": "MutateRowsResult" + }, + "CheckAndMutateRow": { + "requestType": "CheckAndMutateRowRequest", + "responseType": "CheckAndMutateRowResult" + }, + "SampleRowKeys": { + "requestType": "SampleRowKeysRequest", + "responseType": "SampleRowKeysResult" + }, + "ReadModifyWriteRow": { + "requestType": "ReadModifyWriteRowRequest", + "responseType": "RowResult" + }, + "ExecuteQuery": { + "requestType": "ExecuteQueryRequest", + "responseType": "ExecuteQueryResult" + } + } + } + } } } }, diff --git a/src/index.ts b/src/index.ts index 380536a0a..fd20fc933 100644 --- a/src/index.ts +++ b/src/index.ts @@ -112,6 +112,11 @@ export interface BigtableOptions extends gax.GoogleAuthOptions { BigtableTableAdminClient?: gax.ClientOptions; metricsEnabled?: boolean; + + /** + * Internal only. + */ + clientConfig?: gax.ClientConfig; } /** @@ -509,9 +514,9 @@ export class Bigtable { options.apiEndpoint || process.env.BIGTABLE_EMULATOR_HOST; this.customEndpoint = customEndpoint; - let customEndpointBaseUrl; - let customEndpointPort; - let sslCreds; + let customEndpointBaseUrl: string | undefined; + let customEndpointPort = 443; + let sslCreds: gaxVendoredGrpc.ChannelCredentials | undefined; if (customEndpoint) { const customEndpointParts = customEndpoint.split(':'); @@ -523,7 +528,7 @@ export class Bigtable { const baseOptions = Object.assign({ libName: 'gccl', libVersion: PKG.version, - port: customEndpointPort || 443, + port: customEndpointPort, sslCreds, scopes, 'grpc.keepalive_time_ms': 30000, diff --git a/src/row.ts b/src/row.ts index 94155211d..b97177110 100644 --- a/src/row.ts +++ b/src/row.ts @@ -30,7 +30,7 @@ import {CallOptions} from 'google-gax'; import {ServiceError} from 'google-gax'; import {google} from '../protos/protos'; import {RowDataUtils, RowProperties} from './row-data-utils'; -import {TabularApiSurface} from './tabular-api-surface'; +import {GetRowsOptions, TabularApiSurface} from './tabular-api-surface'; import {getRowsInternal} from './utils/getRowsInternal'; import { MethodName, @@ -667,9 +667,10 @@ export class Row { filter = arrify(filter).concat(options.filter); } - const getRowsOptions = Object.assign({}, options, { + const getRowsOptions: GetRowsOptions = Object.assign({}, options, { keys: [this.id], filter, + limit: 1, }); const metricsCollector = diff --git a/src/utils/createReadStreamInternal.ts b/src/utils/createReadStreamInternal.ts index 15f3b168a..59026fbcd 100644 --- a/src/utils/createReadStreamInternal.ts +++ b/src/utils/createReadStreamInternal.ts @@ -428,6 +428,19 @@ export function createReadStreamInternal( rowStreamPipe(rowStream, userStream); }; + // If the timeout is exceeded for the whole operation, bail with + // an error as the conformance test requires. + if (timeout) { + const deadlineTimer = setTimeout(() => { + const err = new Error(`Total timeout of ${timeout}ms exceeded.`); + (err as unknown as grpc.StatusObject).code = + grpc.status.DEADLINE_EXCEEDED; + userStream.destroy(err); + }, timeout); + + userStream.on('close', () => clearTimeout(deadlineTimer)); + } + makeNewRequest(); return userStream; } diff --git a/test/table.ts b/test/table.ts index c10e89145..1eff55886 100644 --- a/test/table.ts +++ b/test/table.ts @@ -1190,7 +1190,10 @@ describe('Bigtable/Table', () => { .on('data', done); }); }); - it('Should respect the timeout parameter passed in for UNAVAILABLE error', done => { + + // Skip: This test currently doesn't make sense after conformance test + // changes. The error will always be DEADLINE_EXCEEDED, not UNAVAILABLE. + it.skip('Should respect the timeout parameter passed in for UNAVAILABLE error', done => { // The timeout is 2 seconds, but the error is received after 3 seconds // so the client doesn't retry because more than 2 seconds have elapsed. const requestSpy = (table.bigtable.request = sinon.spy(() => { @@ -1213,9 +1216,11 @@ describe('Bigtable/Table', () => { done(); }); }); + it('Should respect the timeout parameter passed in for DEADLINE_EXCEEDED error', done => { // The timeout is 2 seconds, but the error is received after 3 seconds // so the client doesn't retry because more than 2 seconds have elapsed. + let timeoutReceived = false; const requestSpy = (table.bigtable.request = sinon.spy(() => { const stream = new PassThrough({ objectMode: true, @@ -1230,10 +1235,16 @@ describe('Bigtable/Table', () => { })); const stream = table.createReadStream({gaxOptions: {timeout: 2000}}); stream.on('error', (error: ServiceError) => { - assert.strictEqual(error.code, 4); - assert.strictEqual(error.message, 'retry me!'); - assert.strictEqual(requestSpy.callCount, 1); // Ensures the client has not retried. - done(); + if (!timeoutReceived) { + assert.strictEqual(error.code, 4); + assert.strictEqual( + error.message, + 'Total timeout of 2000ms exceeded.', + ); + assert.strictEqual(requestSpy.callCount, 1); // Ensures the client has not retried. + done(); + } + timeoutReceived = true; }); }); describe('retries', () => { diff --git a/test/test-proxy/checkAndMutateRowService.ts b/test/test-proxy/checkAndMutateRowService.ts index 803d139dd..f4a240856 100644 --- a/test/test-proxy/checkAndMutateRowService.ts +++ b/test/test-proxy/checkAndMutateRowService.ts @@ -17,9 +17,9 @@ import * as assert from 'assert'; import {describe} from 'mocha'; import {protos} from '../../src'; import {BigtableClient} from '../../src/v2'; -import type {Callback, CallOptions, ServiceError} from 'google-gax'; -const checkAndMutateRowService = require('../../../testproxy/services/check-and-mutate-row.js'); -const createClient = require('../../../testproxy/services/create-client.js'); +import type {Callback, CallOptions} from 'google-gax'; +import {checkAndMutateRow} from '../../testproxy/services/check-and-mutate-row'; +import {createClient} from '../../testproxy/services/create-client'; describe('TestProxy/CheckAndMutateRow', () => { const testCases: protos.google.bigtable.v2.ICheckAndMutateRowRequest[] = [ @@ -109,7 +109,7 @@ describe('TestProxy/CheckAndMutateRow', () => { appProfileId: '', }, }, - (error: ServiceError, response: {}) => { + (error: Error | null, response: {} | null) => { if (error) { reject(error); } @@ -161,14 +161,14 @@ describe('TestProxy/CheckAndMutateRow', () => { }; } await new Promise((resolve, reject) => { - checkAndMutateRowService({clientMap})( + checkAndMutateRow({clientMap})( { request: { clientId, request: checkAndMutateRowRequest, }, }, - (error: ServiceError, response: {}) => { + (error: Error | null, response: {} | null) => { if (error) { reject(error); } diff --git a/test/test-proxy/readModifyWriteRowService.ts b/test/test-proxy/readModifyWriteRowService.ts index 9bf0462e7..e7e529165 100644 --- a/test/test-proxy/readModifyWriteRowService.ts +++ b/test/test-proxy/readModifyWriteRowService.ts @@ -18,8 +18,8 @@ import {describe} from 'mocha'; import {protos} from '../../src'; import {BigtableClient} from '../../src/v2'; import type {Callback, CallOptions} from 'google-gax'; -const readModifyWriteRowService = require('../../../testproxy/services/read-modify-write-row.js'); -const createClient = require('../../../testproxy/services/create-client.js'); +import {readModifyWriteRow} from '../../testproxy/services/read-modify-write-row'; +import {createClient} from '../../testproxy/services/create-client'; describe('TestProxy/ReadModifyWriteRow', () => { const testCases: protos.google.bigtable.v2.IReadModifyWriteRowRequest[] = [ @@ -109,7 +109,7 @@ describe('TestProxy/ReadModifyWriteRow', () => { resolve([response, {}, undefined]); }); }; - const readModifyWriteRowFunction = readModifyWriteRowService({ + const readModifyWriteRowFunction = readModifyWriteRow({ clientMap, }); await new Promise((resolve, reject) => { diff --git a/testproxy/README.md b/testproxy/README.md index 4bba9c6d8..3b8e30c17 100644 --- a/testproxy/README.md +++ b/testproxy/README.md @@ -34,3 +34,6 @@ the value use the `PORT` environment variable, e.g: $ PORT=1337 npm run testproxy ``` +## Exclusions + +Some tests are testing things that the library doesn't support; these would require feature work, and are in `known_unsupported.txt`. Some of them are simply known failures that need to be fixed, but are not vital to the operation of the library, and are in `known_failures.txt`. Ideally these would all be complete, but until they are, they're listed in those files. Items in both files are excluded during "mandatory conformance", and items unsupported items are excluded during "conformance". diff --git a/testproxy/index.js b/testproxy/index.ts similarity index 66% rename from testproxy/index.js rename to testproxy/index.ts index 28611d446..fc29c3f96 100644 --- a/testproxy/index.js +++ b/testproxy/index.ts @@ -11,14 +11,13 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const {dirname, resolve} = require('node:path'); +import {dirname, resolve} from 'node:path'; -const grpc = require('@grpc/grpc-js'); -const protoLoader = require('@grpc/proto-loader'); +import * as grpc from '@grpc/grpc-js'; +import * as protoLoader from '@grpc/proto-loader'; -const services = require('./services/index.js'); +import {getServicesImplementation} from './services'; const GAX_PROTOS_DIR = resolve( dirname(require.resolve('google-gax')), @@ -26,7 +25,7 @@ const GAX_PROTOS_DIR = resolve( ); const PROTOS_DIR = resolve(__dirname, '../protos'); const PROTO_PATH = resolve(PROTOS_DIR, 'test_proxy.proto'); -const port = parseInt(process.env.PORT, 10) || 9999; +const port = parseInt(process.env.PORT ?? '9999', 10); async function loadDescriptor() { const packageDefinition = await protoLoader.load(PROTO_PATH, { @@ -40,9 +39,11 @@ async function loadDescriptor() { return grpc.loadPackageDefinition(packageDefinition); } -function startServer(service) { +function startServer( + service: grpc.ServiceDefinition, +) { const server = new grpc.Server(); - server.addService(service, services.getServicesImplementation()); + server.addService(service, getServicesImplementation()); return server.bindAsync( `0.0.0.0:${port}`, @@ -55,9 +56,16 @@ function startServer(service) { async function main() { const descriptor = await loadDescriptor(); - const {service} = - descriptor.google.bigtable.testproxy.CloudBigtableV2TestProxy; + const testproxy = ( + (descriptor.google as grpc.GrpcObject).bigtable as grpc.GrpcObject + ).testproxy as grpc.GrpcObject; + const service = ( + testproxy.CloudBigtableV2TestProxy as grpc.ServiceClientConstructor + ).service; startServer(service); } -main(); +main().catch(e => { + console.error('error during tests', e); + process.exitCode = 1; +}); diff --git a/testproxy/known_failures.txt b/testproxy/known_failures.txt index f8210a570..b276c9b34 100644 --- a/testproxy/known_failures.txt +++ b/testproxy/known_failures.txt @@ -1,18 +1,7 @@ -TestMutateRow_Generic_DeadlineExceeded\| TestMutateRow_Generic_CloseClient\| -TestMutateRows_Retry_WithRoutingCookie\| +TestMutateRow_Generic_DeadlineExceeded\| +TestReadModifyWriteRow_Generic_DeadlineExceeded\| TestReadRow_Generic_DeadlineExceeded\| -TestReadRow_Retry_WithRoutingCookie\| -TestReadRow_Retry_WithRetryInfo\| -TestReadRows_ReverseScans_FeatureFlag_Enabled\| -TestReadRows_NoRetry_OutOfOrderError_Reverse\| -TestReadRows_Retry_LastScannedRow_Reverse\| -TestReadRows_Retry_WithRoutingCookie\| -TestReadRows_Retry_WithRoutingCookie_MultipleErrorResponses\| -TestReadRows_Retry_WithRetryInfo\| -TestReadRows_Retry_WithRetryInfo_MultipleErrorResponse\| -TestSampleRowKeys_Retry_WithRoutingCookie\| -TestSampleRowKeys_Generic_CloseClient\| TestSampleRowKeys_Generic_Headers\| TestSampleRowKeys_NoRetry_NoEmptyKey\| -TestSampleRowKeys_Retry_WithRetryInfo +TestSampleRowKeys_Generic_CloseClient\| diff --git a/testproxy/known_unsupported.txt b/testproxy/known_unsupported.txt new file mode 100644 index 000000000..da27548e0 --- /dev/null +++ b/testproxy/known_unsupported.txt @@ -0,0 +1,13 @@ +TestMutateRows_Retry_WithRoutingCookie\| +TestReadRow_Retry_WithRetryInfo\| +TestReadRow_Retry_WithRoutingCookie\| +TestReadRow_Retry_WithRetryInfo\| +TestReadRows_ReverseScans_FeatureFlag_Enabled\| +TestReadRows_NoRetry_OutOfOrderError_Reverse\| +TestReadRows_Retry_LastScannedRow_Reverse\| +TestReadRows_Retry_WithRoutingCookie\| +TestReadRows_Retry_WithRoutingCookie_MultipleErrorResponses\| +TestReadRows_Retry_WithRetryInfo\| +TestReadRows_Retry_WithRetryInfo_MultipleErrorResponse\| +TestSampleRowKeys_Retry_WithRoutingCookie\| +TestSampleRowKeys_Retry_WithRetryInfo diff --git a/testproxy/services/bulk-mutate-rows.js b/testproxy/services/bulk-mutate-rows.ts similarity index 58% rename from testproxy/services/bulk-mutate-rows.js rename to testproxy/services/bulk-mutate-rows.ts index 638aaeb5d..05abdeaf7 100644 --- a/testproxy/services/bulk-mutate-rows.js +++ b/testproxy/services/bulk-mutate-rows.ts @@ -11,22 +11,31 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); +import * as grpc from '@grpc/grpc-js'; -const normalizeCallback = require('./utils/normalize-callback.js'); -const getTableInfo = require('./utils/get-table-info'); +import {normalizeCallback, ClientImplMaker, getTableInfo} from './utils'; +import {google} from '../../protos/protos'; +import {PartialFailureError} from '../../src'; +type IMutateRowsRequest = google.bigtable.testproxy.IMutateRowsRequest; +type IMutateRowsResult = google.bigtable.testproxy.IMutateRowsResult; -const bulkMutateRows = ({clientMap}) => +interface ErrorCode { + code?: number; +} + +export const bulkMutateRows: ClientImplMaker< + IMutateRowsRequest, + IMutateRowsResult +> = ({clientMap}) => normalizeCallback(async rawRequest => { const {request} = rawRequest; - const {request: mutateRequest} = request; - const {entries, tableName} = mutateRequest; + const {entries, tableName} = request.request!; const {clientId} = request; - const bigtable = clientMap.get(clientId); - const table = getTableInfo(bigtable, tableName); + const bigtable = clientMap.get(clientId!); + const table = getTableInfo(bigtable, tableName!); + try { const mutateOptions = { rawMutation: true, @@ -36,13 +45,14 @@ const bulkMutateRows = ({clientMap}) => status: {code: grpc.status.OK, details: []}, entries: [], }; - } catch (error) { + } catch (e) { + const error = e as PartialFailureError & ErrorCode; const entries = error.errors - ? Array.from(error.errors.entries()).map(([index, entry]) => ({ + ? Array.from(error.errors.entries()).map(([index, err]) => ({ index: index + 1, status: { - code: entry.code, - message: entry.message, + code: (err as ErrorCode).code, + message: err.message, }, })) : []; @@ -56,5 +66,3 @@ const bulkMutateRows = ({clientMap}) => }; } }); - -module.exports = bulkMutateRows; diff --git a/testproxy/services/check-and-mutate-row.js b/testproxy/services/check-and-mutate-row.ts similarity index 61% rename from testproxy/services/check-and-mutate-row.js rename to testproxy/services/check-and-mutate-row.ts index e299988fa..d6ec13c40 100644 --- a/testproxy/services/check-and-mutate-row.js +++ b/testproxy/services/check-and-mutate-row.ts @@ -11,18 +11,19 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); +import * as grpc from '@grpc/grpc-js'; -const normalizeCallback = require('./utils/normalize-callback.js'); -const getTableInfo = require('./utils/get-table-info'); -const { - createFlatMutationsListWithFnInverse, -} = require('../../build/testproxy/services/utils/request/createFlatMutationsList.js'); -const { - mutationParseInverse, -} = require('../../build/testproxy/services/utils/request/mutateInverse.js'); +import {ClientImplMaker, getTableInfo, normalizeCallback} from './utils'; +import {createFlatMutationsListWithFnInverse} from './utils/request/createFlatMutationsList'; +import {mutationParseInverse} from './utils/request/mutateInverse'; +import {google} from '../../protos/protos'; +import {RawFilter} from '../../src'; +import {GoogleError} from 'google-gax'; +type ICheckAndMutateRowRequest = + google.bigtable.testproxy.ICheckAndMutateRowRequest; +type ICheckAndMutateRowResult = + google.bigtable.testproxy.ICheckAndMutateRowResult; /** * Transforms mutations from the gRPC layer format to the handwritten layer format. @@ -33,7 +34,9 @@ const { * @param {google.bigtable.v2.IMutation[]} gapicLayerMutations An array of mutations in the gRPC layer format. * @returns {FilterConfigOption[]} An array of mutations in the handwritten layer format. */ -function handwrittenLayerMutations(gapicLayerMutations) { +function handwrittenLayerMutations( + gapicLayerMutations: google.bigtable.v2.IMutation[], +) { return gapicLayerMutations .map(mutation => createFlatMutationsListWithFnInverse( @@ -56,31 +59,36 @@ function handwrittenLayerMutations(gapicLayerMutations) { * @param {Bytes} bytes The byte array or string to convert. * @returns {string} The converted string. */ -function convertFromBytes(bytes) { - if (bytes instanceof Buffer) { +function convertFromBytes(bytes: Buffer | string | Uint8Array): string { + if (Buffer.isBuffer(bytes)) { return bytes.toString(); } else if (typeof bytes === 'string') { return bytes; + } else if (bytes instanceof Uint8Array) { + return Buffer.from(bytes).toString(); } else { throw new Error('Invalid input type. Must be Buffer or string.'); } } -const checkAndMutateRow = ({clientMap}) => +export const checkAndMutateRow: ClientImplMaker< + ICheckAndMutateRowRequest, + ICheckAndMutateRowResult +> = ({clientMap}) => normalizeCallback(async rawRequest => { const {request} = rawRequest; const {clientId, request: checkAndMutateRowRequest} = request; const {appProfileId, falseMutations, rowKey, tableName, trueMutations} = - checkAndMutateRowRequest; - const onMatch = handwrittenLayerMutations(trueMutations); - const onNoMatch = handwrittenLayerMutations(falseMutations); - const id = convertFromBytes(rowKey); - const bigtable = clientMap.get(clientId); + checkAndMutateRowRequest!; + const onMatch = handwrittenLayerMutations(trueMutations!); + const onNoMatch = handwrittenLayerMutations(falseMutations!); + const id = convertFromBytes(rowKey!); + const bigtable = clientMap.get(clientId!)!; bigtable.appProfileId = - appProfileId === '' ? clientMap.get(clientId).appProfileId : appProfileId; - const table = getTableInfo(bigtable, tableName); + appProfileId === '' ? bigtable.appProfileId! : appProfileId!; + const table = getTableInfo(bigtable, tableName!); const row = table.row(id); - const filter = []; + const filter: RawFilter[] = []; const filterConfig = {onMatch, onNoMatch}; try { const [, result] = await row.filter(filter, filterConfig); @@ -89,14 +97,13 @@ const checkAndMutateRow = ({clientMap}) => result, }; } catch (e) { + const error = e as GoogleError; return { status: { - code: e.code ? e.code : grpc.status.UNKNOWN, + code: error.code ? error.code : grpc.status.UNKNOWN, details: [], - message: e.message, + message: error.message, }, }; } }); - -module.exports = checkAndMutateRow; diff --git a/testproxy/services/remove-client.js b/testproxy/services/close-client.ts similarity index 64% rename from testproxy/services/remove-client.js rename to testproxy/services/close-client.ts index 13d381e51..7732db515 100644 --- a/testproxy/services/remove-client.js +++ b/testproxy/services/close-client.ts @@ -11,24 +11,23 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const normalizeCallback = require('./utils/normalize-callback.js'); +import {google} from '../../protos/protos'; +import {ClientImplMaker, normalizeCallback} from './utils'; +type ICloseClientRequest = google.bigtable.testproxy.ICloseClientRequest; +type ICloseClientResponse = google.bigtable.testproxy.ICloseClientResponse; -const v2 = Symbol.for('v2'); - -const removeClient = ({clientMap}) => +export const closeClient: ClientImplMaker< + ICloseClientRequest, + ICloseClientResponse +> = ({clientMap}) => normalizeCallback(async rawRequest => { const request = rawRequest.request; const {clientId} = request; - const bigtable = clientMap.get(clientId); + const bigtable = clientMap.get(clientId!); if (bigtable) { - await bigtable[v2].close(); await bigtable.close(); - clientMap.delete(clientId); - return {}; } + return {}; }); - -module.exports = removeClient; diff --git a/testproxy/services/create-client.js b/testproxy/services/create-client.ts similarity index 61% rename from testproxy/services/create-client.js rename to testproxy/services/create-client.ts index 01210dce5..b03bcef94 100644 --- a/testproxy/services/create-client.js +++ b/testproxy/services/create-client.ts @@ -11,26 +11,39 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const normalizeCallback = require('./utils/normalize-callback.js'); +import {ClientImplMaker, normalizeCallback} from './utils'; +import {google} from '../../protos/protos'; -const grpc = require('@grpc/grpc-js'); -const {Bigtable} = require('../../build/src/index.js'); -const { - ClientSideMetricsConfigManager, -} = require('../../build/src/client-side-metrics/metrics-config-manager'); -const {BigtableClient} = require('../../build/src/index.js').v2; +import * as grpc from '@grpc/grpc-js'; +import {Bigtable} from '../../src'; +import {createBigtableClient} from './utils/bigtable-client'; -const v2 = Symbol.for('v2'); - -function durationToMilliseconds(duration) { - const secondsInMs = parseInt(duration.seconds, 10) * 1000; - const nanosInMs = duration.nanos / 1000000; +function durationToMilliseconds( + duration: google.protobuf.Duration | google.protobuf.IDuration, +) { + const secondsInMs = parseInt(duration.seconds as string, 10) * 1000; + const nanosInMs = duration.nanos! / 1000000; return secondsInMs + nanosInMs; } -const createClient = ({clientMap}) => +type ICreateClientRequest = google.bigtable.testproxy.ICreateClientRequest; +type ICreateClientResponse = google.bigtable.testproxy.ICreateClientResponse; + +interface HasCredential { + callCredential?: {jsonServiceAccount: string}; +} + +interface MethodConfig { + timeout_millis: number; + retry_codes_name: string; + retry_params_name: string; +} + +export const createClient: ClientImplMaker< + ICreateClientRequest, + ICreateClientResponse +> = ({clientMap}) => normalizeCallback(async rawRequest => { // TODO: Handle refresh periods const {request} = rawRequest; @@ -44,7 +57,7 @@ const createClient = ({clientMap}) => instanceId, dataTarget: apiEndpoint, appProfileId, - } = request; + } = request as ICreateClientRequest & HasCredential; if (!(clientId && projectId && instanceId && apiEndpoint)) { throw Object.assign( @@ -64,7 +77,7 @@ const createClient = ({clientMap}) => // TODO: Implement support to SSL connection let authClient; if (callCredential && callCredential.jsonServiceAccount) { - authClient = JSON.parse(request.callCredential.jsonServiceAccount); + authClient = JSON.parse(callCredential.jsonServiceAccount); } if (request.perOperationTimeout) { /** @@ -74,22 +87,19 @@ const createClient = ({clientMap}) => Object.entries( clientConfig.interfaces['google.bigtable.v2.Bigtable'].methods, ).forEach(([, v]) => { - v.timeout_millis = durationToMilliseconds(request.perOperationTimeout); + (v as MethodConfig).timeout_millis = durationToMilliseconds( + request.perOperationTimeout!, + ); }); } const bigtable = new Bigtable({ projectId, apiEndpoint, authClient, - appProfileId, + appProfileId: appProfileId!, clientConfig, }); - const handlers = []; - bigtable._metricsConfigManager = new ClientSideMetricsConfigManager( - handlers, - ); - bigtable[v2] = new BigtableClient(bigtable.options.BigtableClient); - clientMap.set(clientId, bigtable); + createBigtableClient(bigtable); + clientMap.set(clientId!, bigtable); + return {}; }); - -module.exports = createClient; diff --git a/testproxy/services/execute-query.js b/testproxy/services/execute-query.js deleted file mode 100644 index 1c6ba26ef..000000000 --- a/testproxy/services/execute-query.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2025 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -'use strict'; - -const grpc = require('@grpc/grpc-js'); -const { - parseMetadata, - parseRows, - parseParameters, -} = require('../../build/testproxy/services/utils/request/createExecuteQueryResponse.js'); -const normalizeCallback = require('./utils/normalize-callback.js'); - -const executeQuery = ({clientMap}) => - normalizeCallback(async rawRequest => { - const {request, clientId} = rawRequest.request; - - const {instanceName} = request; - const bigtable = clientMap.get(clientId); - const instance = bigtable.instance(instanceName); - - try { - const [parameters, parameterTypes] = await parseParameters( - request.params, - ); - const [preparedStatement] = await instance.prepareStatement({ - query: request.query, - parameterTypes: parameterTypes, - }); - const [rows] = await instance.executeQuery({ - preparedStatement, - parameters: parameters, - retryOptions: {}, - }); - - const parsedMetadata = await parseMetadata(preparedStatement); - const parsedRows = await parseRows(preparedStatement, rows); - return { - status: {code: grpc.status.OK, details: []}, - rows: parsedRows, - metadata: {columns: parsedMetadata}, - }; - } catch (e) { - return { - status: { - code: e.code || grpc.status.INTERNAL, - details: [], // e.details must be in an empty array for the test runner to return the status. This is tracked in https://b.corp.google.com/issues/383096533. - message: e.message, - }, - }; - } - }); - -module.exports = executeQuery; diff --git a/testproxy/services/execute-query.ts b/testproxy/services/execute-query.ts new file mode 100644 index 000000000..598c2fd62 --- /dev/null +++ b/testproxy/services/execute-query.ts @@ -0,0 +1,79 @@ +// Copyright 2025-2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {GoogleError} from 'google-gax'; +import * as grpc from '@grpc/grpc-js'; +import { + parseMetadata, + parseRows, + parseParameters, +} from './utils/request/createExecuteQueryResponse'; +import {ClientImplMaker, normalizeCallback} from './utils'; +import {ExecuteQueryOptions} from '../../src/instance'; + +import {google} from '../../protos/protos'; +type IExecuteQueryRequest = google.bigtable.testproxy.IExecuteQueryRequest; +type IExecuteQueryResult = google.bigtable.testproxy.IExecuteQueryResult; +type ExecuteQueryParameters = ExecuteQueryOptions['parameters']; + +export const executeQuery: ClientImplMaker< + IExecuteQueryRequest, + IExecuteQueryResult +> = ({clientMap}) => + normalizeCallback(async rawRequest => { + const {request} = rawRequest; + const {clientId} = request; + const queryRequest = request.request!; + + const {instanceName} = queryRequest; + const bigtable = clientMap.get(clientId!); + const instance = bigtable.instance(instanceName!); + + try { + const [parameters, parameterTypes] = await parseParameters( + // The empty object here is equivalent to `params` in the proto. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + queryRequest.params || ({} as any), + ); + const [preparedStatement] = await instance.prepareStatement({ + query: queryRequest.query!, + parameterTypes: parameterTypes, + }); + const [rows] = await instance.executeQuery({ + preparedStatement, + parameters: parameters as ExecuteQueryParameters, + retryOptions: {}, + }); + + const parsedMetadata = await parseMetadata(preparedStatement); + const parsedRows = await parseRows(preparedStatement, rows); + + return { + status: {code: grpc.status.OK, details: []}, + rows: parsedRows, + metadata: {columns: parsedMetadata}, + }; + } catch (e) { + console.error(e); // Log the error for debugging + const error = e as GoogleError; + return { + status: { + code: error.code || grpc.status.UNKNOWN, + // e.details must be in an empty array for the test runner to return the status. This is tracked in b/383096533. + details: [], + message: error.message, + }, + }; + } + }); diff --git a/testproxy/services/index.js b/testproxy/services/index.ts similarity index 51% rename from testproxy/services/index.js rename to testproxy/services/index.ts index 09b169109..41816045a 100644 --- a/testproxy/services/index.js +++ b/testproxy/services/index.ts @@ -11,28 +11,34 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const bulkMutateRows = require('./bulk-mutate-rows.js'); -const checkAndMutateRow = require('./check-and-mutate-row.js'); -const ClientMap = require('./utils/client-map.js'); -const closeClient = require('./close-client.js'); -const createClient = require('./create-client.js'); -const mutateRow = require('./mutate-row.js'); -const readModifyWriteRow = require('./read-modify-write-row.js'); -const readRow = require('./read-row.js'); -const readRows = require('./read-rows.js'); -const removeClient = require('./remove-client.js'); -const sampleRowKeys = require('./sample-row-keys.js'); -const executeQuery = require('./execute-query.js'); +import {bulkMutateRows} from './bulk-mutate-rows'; +import {checkAndMutateRow} from './check-and-mutate-row'; +import {ClientMap} from './utils/client-map'; +import {closeClient} from './close-client'; +import {createClient} from './create-client'; +import {mutateRow} from './mutate-row'; +import {readModifyWriteRow} from './read-modify-write-row'; +import {readRow} from './read-row'; +import {readRows} from './read-rows'; +import {removeClient} from './remove-client'; +import {sampleRowKeys} from './sample-row-keys'; +import {executeQuery} from './execute-query'; -/* - * Starts the client pool map and retrieves the object that - * lists all methods to be passed to grpc.Server.addService. - * - * ref: https://grpc.github.io/grpc/node/grpc.Server.html#addService__anchor - */ -function getServicesImplementation() { +import {google} from '../../protos/protos'; +import {handleUnaryCall} from '@grpc/grpc-js'; +type CloudBigtableV2TestProxy = + google.bigtable.testproxy.CloudBigtableV2TestProxy; + +export {CloudBigtableV2TestProxy}; + +export interface ServiceImplementations { + // We don't really care about the specific return types here. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [key: string]: handleUnaryCall; +} + +export function getServicesImplementation(): ServiceImplementations { const clientMap = new ClientMap(); return { @@ -49,7 +55,3 @@ function getServicesImplementation() { executeQuery: executeQuery({clientMap}), }; } - -module.exports = { - getServicesImplementation, -}; diff --git a/testproxy/services/mutate-row.js b/testproxy/services/mutate-row.js deleted file mode 100644 index 88c344e88..000000000 --- a/testproxy/services/mutate-row.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -'use strict'; - -const grpc = require('@grpc/grpc-js'); - -const normalizeCallback = require('./utils/normalize-callback.js'); - -const v2 = Symbol.for('v2'); - -const mutateRow = ({clientMap}) => - normalizeCallback(async rawRequest => { - const {request} = rawRequest; - const {request: mutateRequest} = request; - const {mutations, tableName, rowKey} = mutateRequest; - const {clientId} = request; - const appProfileId = clientMap.get(clientId).appProfileId; - const client = clientMap.get(clientId)[v2]; - - await client.mutateRow({ - appProfileId, - mutations, - tableName, - rowKey, - }); - - return { - status: {code: grpc.status.OK, details: []}, - }; - }); - -module.exports = mutateRow; diff --git a/testproxy/services/mutate-row.ts b/testproxy/services/mutate-row.ts new file mode 100644 index 000000000..286fe7953 --- /dev/null +++ b/testproxy/services/mutate-row.ts @@ -0,0 +1,58 @@ +// Copyright 2022-2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import * as grpc from '@grpc/grpc-js'; +import {GoogleError} from 'google-gax'; +import {google} from '../../protos/protos'; +type IMutateRowRequest = google.bigtable.testproxy.IMutateRowRequest; +type IMutateRowResult = google.bigtable.testproxy.IMutateRowResult; + +import {ClientImplMaker, normalizeCallback} from './utils'; +import {getBigtableClient} from './utils/bigtable-client'; + +export const mutateRow: ClientImplMaker< + IMutateRowRequest, + IMutateRowResult +> = ({clientMap}) => + normalizeCallback(async rawRequest => { + const {request} = rawRequest; + const {request: mutateRequest} = request; + const {mutations, tableName, rowKey} = mutateRequest!; + const {clientId} = request; + const bigtable = clientMap.get(clientId!); + const appProfileId = bigtable.appProfileId; + const client = getBigtableClient(bigtable); + + try { + await client.mutateRow({ + appProfileId, + mutations, + tableName, + rowKey, + }); + + return { + status: {code: grpc.status.OK, details: []}, + }; + } catch (e) { + const error = e as GoogleError; + return { + status: { + code: error.code ? error.code : grpc.status.UNKNOWN, + message: error.message, + details: [], + }, + }; + } + }); diff --git a/testproxy/services/read-modify-write-row.js b/testproxy/services/read-modify-write-row.ts similarity index 59% rename from testproxy/services/read-modify-write-row.js rename to testproxy/services/read-modify-write-row.ts index 5117a4fcd..07470a897 100644 --- a/testproxy/services/read-modify-write-row.js +++ b/testproxy/services/read-modify-write-row.ts @@ -11,43 +11,47 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); +import * as grpc from '@grpc/grpc-js'; +import {GoogleError} from 'google-gax'; -const normalizeCallback = require('./utils/normalize-callback.js'); -const { - getRMWRRequestInverse, -} = require('../../build/testproxy/services/utils/request/readModifyWriteRow.js'); -const getTableInfo = require('./utils/get-table-info'); +import {google} from '../../protos/protos'; +type IReadModifyWriteRowRequest = + google.bigtable.testproxy.IReadModifyWriteRowRequest; +type IRowResult = google.bigtable.testproxy.IRowResult; -const readModifyWriteRow = ({clientMap}) => +import {ClientImplMaker, getTableInfo, normalizeCallback} from './utils'; +import {getRMWRRequestInverse} from './utils/request/readModifyWriteRow'; + +export const readModifyWriteRow: ClientImplMaker< + IReadModifyWriteRowRequest, + IRowResult +> = ({clientMap}) => normalizeCallback(async rawRequest => { const {request} = rawRequest; const {clientId, request: readModifyWriteRow} = request; - const {appProfileId, tableName} = readModifyWriteRow; - const handWrittenRequest = getRMWRRequestInverse(readModifyWriteRow); - const bigtable = clientMap.get(clientId); + const {appProfileId, tableName} = readModifyWriteRow!; + const handWrittenRequest = getRMWRRequestInverse(readModifyWriteRow!); + const bigtable = clientMap.get(clientId!); if (appProfileId && appProfileId !== '') { bigtable.appProfileId = appProfileId; } - const table = getTableInfo(bigtable, tableName); + const table = getTableInfo(bigtable, tableName!); const row = table.row(handWrittenRequest.id); try { - const [result] = await row.createRules(handWrittenRequest.rules); + const [result] = await row.createRules(handWrittenRequest.rules!); return { status: {code: grpc.status.OK, details: []}, row: result.row, }; } catch (e) { + const error = e as GoogleError; return { status: { - code: e.code ? e.code : grpc.status.UNKNOWN, + code: error.code ? error.code : grpc.status.UNKNOWN, details: [], - message: e.message, + message: error.message, }, }; } }); - -module.exports = readModifyWriteRow; diff --git a/testproxy/services/read-row.js b/testproxy/services/read-row.ts similarity index 56% rename from testproxy/services/read-row.js rename to testproxy/services/read-row.ts index 7ea53cb22..b3931e72b 100644 --- a/testproxy/services/read-row.js +++ b/testproxy/services/read-row.ts @@ -11,21 +11,31 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); +import * as grpc from '@grpc/grpc-js'; -const normalizeCallback = require('./utils/normalize-callback.js'); -const getRowResponse = require('./utils/get-row-response.js'); -const getTableInfo = require('./utils/get-table-info.js'); +import {google} from '../../protos/protos'; +type IReadRowRequest = google.bigtable.testproxy.IReadRowRequest; +type IRowResult = google.bigtable.testproxy.IRowResult; -const readRow = ({clientMap}) => +import { + ClientImplMaker, + normalizeCallback, + getRowResponse, + getTableInfo, +} from './utils'; + +export const readRow: ClientImplMaker = ({ + clientMap, +}) => normalizeCallback(async rawRequest => { - const {clientId, columns = {}, rowKey, tableName} = rawRequest.request; + const {clientId, rowKey, tableName} = rawRequest.request; + const columns = {}; + + const bigtable = clientMap.get(clientId!); + const table = getTableInfo(bigtable, tableName!); + const row = table.row(rowKey!); - const bigtable = clientMap.get(clientId); - const table = getTableInfo(bigtable, tableName); - const row = table.row(rowKey); const res = await row.get(columns); const firstRow = getRowResponse(res[0]); @@ -34,5 +44,3 @@ const readRow = ({clientMap}) => row: firstRow, }; }); - -module.exports = readRow; diff --git a/testproxy/services/read-rows.js b/testproxy/services/read-rows.ts similarity index 60% rename from testproxy/services/read-rows.js rename to testproxy/services/read-rows.ts index e0388ddc0..b4eb7bd9a 100644 --- a/testproxy/services/read-rows.js +++ b/testproxy/services/read-rows.ts @@ -11,22 +11,32 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); +import * as grpc from '@grpc/grpc-js'; +import {GoogleError} from 'google-gax'; -const normalizeCallback = require('./utils/normalize-callback.js'); -const getRowResponse = require('./utils/get-row-response.js'); -const getTableInfo = require('./utils/get-table-info.js'); +import {google} from '../../protos/protos'; +type IReadRowsRequest = google.bigtable.testproxy.IReadRowsRequest; +type IReadRowsRequestV2 = google.bigtable.v2.IReadRowsRequest; +type IRowsResult = google.bigtable.testproxy.IRowsResult; +type IRowRange = google.bigtable.v2.IRowRange; -const getRowsOptions = readRowsRequest => { - const getRowsRequest = {}; +import { + ClientImplMaker, + getRowResponse, + getTableInfo, + normalizeCallback, +} from './utils'; +import {GetRowsOptions} from '../../src'; + +const getRowsOptions = (readRowsRequest: IReadRowsRequestV2) => { + const getRowsRequest: GetRowsOptions = {}; if (readRowsRequest.rows) { const {rowRanges} = readRowsRequest.rows; if (rowRanges) { getRowsRequest.ranges = rowRanges.map( - ({startKeyClosed, endKeyClosed}) => ({ + ({startKeyClosed, endKeyClosed}: IRowRange) => ({ start: {inclusive: true, value: String(startKeyClosed)}, end: {inclusive: true, value: String(endKeyClosed)}, }), @@ -41,12 +51,12 @@ const getRowsOptions = readRowsRequest => { const {rowsLimit} = readRowsRequest; if (rowsLimit && rowsLimit !== '0') { - getRowsRequest.limit = parseInt(rowsLimit, 10); + getRowsRequest.limit = parseInt(rowsLimit as string, 10); } return getRowsRequest; }; -const getReadRowsRequest = request => { +const getReadRowsRequest = (request: IReadRowsRequest) => { const readRowsRequest = request ? request.request : undefined; if (!readRowsRequest || !readRowsRequest.tableName) { throw Object.assign(new Error('table_name must be provided in request.'), { @@ -56,14 +66,16 @@ const getReadRowsRequest = request => { return readRowsRequest; }; -const readRows = ({clientMap}) => +export const readRows: ClientImplMaker = ({ + clientMap, +}) => normalizeCallback(async rawRequest => { const request = rawRequest.request; const {clientId} = request; const readRowsRequest = getReadRowsRequest(request); const {tableName} = readRowsRequest; - const bigtable = clientMap.get(clientId); - const table = getTableInfo(bigtable, tableName); + const bigtable = clientMap.get(clientId!); + const table = getTableInfo(bigtable, tableName || ''); const rowsOptions = getRowsOptions(readRowsRequest); try { const [rows] = await table.getRows(rowsOptions); @@ -72,14 +84,12 @@ const readRows = ({clientMap}) => rows: rows.map(getRowResponse), }; } catch (e) { + const error = e as GoogleError; return { - status: { - code: e.code, - details: [], // e.details must be in an empty array for the test runner to return the status. This is tracked in https://b.corp.google.com/issues/383096533. - message: e.message, - }, + code: error.code, + // e.details must be in an empty array for the test runner to return the status. This is tracked in b/383096533. + details: [], + message: error.message, }; } }); - -module.exports = readRows; diff --git a/testproxy/services/close-client.js b/testproxy/services/remove-client.ts similarity index 57% rename from testproxy/services/close-client.js rename to testproxy/services/remove-client.ts index 2db286c3f..652126fb1 100644 --- a/testproxy/services/close-client.js +++ b/testproxy/services/remove-client.ts @@ -11,20 +11,27 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const normalizeCallback = require('./utils/normalize-callback.js'); +import {ClientImplMaker, normalizeCallback} from './utils'; -const closeClient = ({clientMap}) => +import {google} from '../../protos/protos'; +import {getBigtableClient} from './utils/bigtable-client'; +type IRemoveClientRequest = google.bigtable.testproxy.IRemoveClientRequest; +type IRemoveClientResponse = google.bigtable.testproxy.IRemoveClientResponse; + +export const removeClient: ClientImplMaker< + IRemoveClientRequest, + IRemoveClientResponse +> = ({clientMap}) => normalizeCallback(async rawRequest => { const request = rawRequest.request; const {clientId} = request; - const bigtable = clientMap.get(clientId); + const bigtable = clientMap.get(clientId!); if (bigtable) { + getBigtableClient(bigtable).close(); await bigtable.close(); - return {}; + clientMap.delete(clientId!); } + return {}; }); - -module.exports = closeClient; diff --git a/testproxy/services/sample-row-keys.js b/testproxy/services/sample-row-keys.ts similarity index 55% rename from testproxy/services/sample-row-keys.js rename to testproxy/services/sample-row-keys.ts index 556a0f624..1d851e471 100644 --- a/testproxy/services/sample-row-keys.js +++ b/testproxy/services/sample-row-keys.ts @@ -11,22 +11,27 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); -const { - getSRKRequest, -} = require('../../build/testproxy/services/utils/request/sampleRowKeys.js'); -const normalizeCallback = require('./utils/normalize-callback.js'); +import * as grpc from '@grpc/grpc-js'; +import {GoogleError} from 'google-gax'; +import {getSRKRequest} from './utils/request/sampleRowKeys'; +import {ClientImplMaker, normalizeCallback} from './utils'; -const sampleRowKeys = ({clientMap}) => +import {google} from '../../protos/protos'; +type ISampleRowKeysRequest = google.bigtable.testproxy.ISampleRowKeysRequest; +type ISampleRowKeysResult = google.bigtable.testproxy.ISampleRowKeysResult; + +export const sampleRowKeys: ClientImplMaker< + ISampleRowKeysRequest, + ISampleRowKeysResult +> = ({clientMap}) => normalizeCallback(async rawRequest => { const {request} = rawRequest; const {clientId, request: sampleRowKeysRequest} = request; - const {appProfileId, tableName} = sampleRowKeysRequest; + const {appProfileId, tableName} = sampleRowKeysRequest!; - const bigtable = clientMap.get(clientId); - bigtable.appProfileId = appProfileId; + const bigtable = clientMap.get(clientId!); + bigtable.appProfileId = appProfileId!; try { const response = await getSRKRequest(bigtable, {appProfileId, tableName}); @@ -35,13 +40,15 @@ const sampleRowKeys = ({clientMap}) => status: {code: grpc.status.OK, details: []}, response, }; - } catch (error) { + } catch (e) { + const error = e as GoogleError; console.error('Error:', error.code); return { - status: {code: error.code, details: []}, + status: { + code: error.code, + details: [], + }, }; } }); - -module.exports = sampleRowKeys; diff --git a/testproxy/services/utils/bigtable-client.ts b/testproxy/services/utils/bigtable-client.ts new file mode 100644 index 000000000..21bed6537 --- /dev/null +++ b/testproxy/services/utils/bigtable-client.ts @@ -0,0 +1,35 @@ +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Bigtable} from '../../../src'; +import {ClientSideMetricsConfigManager} from '../../../src/client-side-metrics/metrics-config-manager'; +import {IMetricsHandler} from '../../../src/client-side-metrics/metrics-handler'; +import {BigtableClient} from '../../../src/v2'; + +const v2 = Symbol.for('v2'); + +export function createBigtableClient(bigtable: Bigtable) { + const handlers: IMetricsHandler[] = []; + bigtable._metricsConfigManager = new ClientSideMetricsConfigManager(handlers); + + // We'll store these in the Bigtable object so that we can access them from the + // test proxy. + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (bigtable as any)[v2] = new BigtableClient(bigtable.options.BigtableClient); +} + +export function getBigtableClient(bigtable: Bigtable) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return (bigtable as any)[v2]; +} diff --git a/testproxy/services/utils/client-map.js b/testproxy/services/utils/client-map.ts similarity index 57% rename from testproxy/services/utils/client-map.js rename to testproxy/services/utils/client-map.ts index f9f31bc9e..3c515ff76 100644 --- a/testproxy/services/utils/client-map.js +++ b/testproxy/services/utils/client-map.ts @@ -11,14 +11,38 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); +import * as grpc from '@grpc/grpc-js'; +import {Bigtable} from '../../../src'; -class ClientMap extends Map { +export interface ServiceHandlerParams { + clientMap: ClientMap; +} + +export interface WrappedRequest { + request: RequestType; +} + +export type ClientImpl = ( + rawRequest: WrappedRequest, +) => Promise; + +export type ClientImplCallback = ( + rawRequest: WrappedRequest, + response: (error: Error | null, response: ResponseType | null) => void, +) => void; + +export interface ClientImplMaker { + // The maker returns a gRPC handler function + ( + handlerParams: ServiceHandlerParams, + ): ClientImplCallback; +} + +export class ClientMap extends Map { // TODO: we might need to implement a way to lock // currently used client instances here - get(key) { + get(key: string) { if (!key) { const err = { code: grpc.status.INVALID_ARGUMENT, @@ -39,5 +63,3 @@ class ClientMap extends Map { return res; } } - -module.exports = ClientMap; diff --git a/testproxy/services/utils/get-row-response.js b/testproxy/services/utils/get-row-response.ts similarity index 58% rename from testproxy/services/utils/get-row-response.js rename to testproxy/services/utils/get-row-response.ts index fc9052304..04d9010cb 100644 --- a/testproxy/services/utils/get-row-response.js +++ b/testproxy/services/utils/get-row-response.ts @@ -11,21 +11,28 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const getRowResponse = ({id, data}) => ({ +export const getRowResponse = ({ + id, + data, +}: { + id: string; + data: Record; +}) => ({ key: Buffer.from(id), families: Object.entries(data).map(([familyKey, familyValue]) => ({ name: familyKey, - columns: Object.entries(familyValue).map(([columnKey, columnValue]) => ({ - qualifier: Buffer.from(columnKey), - cells: columnValue.map(({labels, timestamp, value}) => ({ - timestampMicros: timestamp, - value: Buffer.from(value), - labels, - })), - })), + columns: Object.entries(familyValue as Record).map( + ([columnKey, columnValue]) => ({ + qualifier: Buffer.from(columnKey), + cells: (columnValue as Record[]).map( + ({labels, timestamp, value}) => ({ + timestampMicros: timestamp, + value: Buffer.from(value as any), + labels, + }), + ), + }), + ), })), }); - -module.exports = getRowResponse; diff --git a/testproxy/services/utils/get-table-info.js b/testproxy/services/utils/get-table-info.ts similarity index 86% rename from testproxy/services/utils/get-table-info.js rename to testproxy/services/utils/get-table-info.ts index f7a0a2eba..17d0b38cd 100644 --- a/testproxy/services/utils/get-table-info.js +++ b/testproxy/services/utils/get-table-info.ts @@ -11,12 +11,11 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const getTableInfo = (bigtable, tableName) => { +import {Bigtable} from '../../../src'; + +export const getTableInfo = (bigtable: Bigtable, tableName: string) => { const [, , , instanceId, , tableId] = tableName.split('/'); const instance = bigtable.instance(instanceId); return instance.table(tableId); }; - -module.exports = getTableInfo; diff --git a/testproxy/services/utils/index.ts b/testproxy/services/utils/index.ts new file mode 100644 index 000000000..76a74daf8 --- /dev/null +++ b/testproxy/services/utils/index.ts @@ -0,0 +1,18 @@ +// Copyright 2025-2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export * from './client-map'; +export * from './get-row-response'; +export * from './get-table-info'; +export * from './normalize-callback'; diff --git a/testproxy/services/utils/normalize-callback.js b/testproxy/services/utils/normalize-callback.ts similarity index 65% rename from testproxy/services/utils/normalize-callback.js rename to testproxy/services/utils/normalize-callback.ts index 32e3a665b..d61f7b369 100644 --- a/testproxy/services/utils/normalize-callback.js +++ b/testproxy/services/utils/normalize-callback.ts @@ -11,18 +11,22 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -'use strict'; -const grpc = require('@grpc/grpc-js'); +import * as grpc from '@grpc/grpc-js'; -const {callbackify} = require('node:util'); +import {callbackify} from 'node:util'; +import {ClientImpl, ClientImplCallback, WrappedRequest} from './client-map'; -const normalizeCallback = fn => - callbackify(async (...args) => { - let res; +export const normalizeCallback = ( + fn: ClientImpl, +): ClientImplCallback => + callbackify(async (rawRequest: WrappedRequest) => { + let res: ResponseType; try { - res = await fn(...args); - } catch (e) { + res = await fn(rawRequest); + } catch (err) { + const e = err as Error; + // sends original errors directly to standard error since // callbackify is going to swallow them later console.error(e); @@ -38,5 +42,3 @@ const normalizeCallback = fn => } return res; }); - -module.exports = normalizeCallback; diff --git a/testproxy/services/utils/request/createExecuteQueryResponse.ts b/testproxy/services/utils/request/createExecuteQueryResponse.ts index da4f4eeb6..c5edd71c5 100644 --- a/testproxy/services/utils/request/createExecuteQueryResponse.ts +++ b/testproxy/services/utils/request/createExecuteQueryResponse.ts @@ -59,8 +59,8 @@ export async function parseMetadata(preparedStatement: PreparedStatement) { }); return values.map(v => protos.google.bigtable.v2.ColumnMetadata.create({ - name: v[0] as any, - type: v[1] as any, + name: v[0] as string, + type: v[1] as protos.google.bigtable.v2.IType, }), ); } @@ -219,5 +219,8 @@ export async function parseParameters(params: { parameters[paramName] = value; parameterTypes[paramName] = type; } - return [parameters, parameterTypes]; + return [parameters, parameterTypes] as [ + {[param: string]: SqlValue}, + {[param: string]: SqlTypes.Type}, + ]; } diff --git a/testproxy/test_proxy_proto_list.json b/testproxy/test_proxy_proto_list.json new file mode 100644 index 000000000..9dccad3ae --- /dev/null +++ b/testproxy/test_proxy_proto_list.json @@ -0,0 +1,3 @@ +[ + "../protos/test_proxy.proto" +] diff --git a/testproxy/testlog.txt b/testproxy/testlog.txt new file mode 100644 index 000000000..3872c4853 --- /dev/null +++ b/testproxy/testlog.txt @@ -0,0 +1,459 @@ +=== RUN TestCheckAndMutateRow_Generic_Headers +--- PASS: TestCheckAndMutateRow_Generic_Headers (0.06s) +=== RUN TestCheckAndMutateRow_NoRetry_TrueMutations +--- PASS: TestCheckAndMutateRow_NoRetry_TrueMutations (0.05s) +=== RUN TestCheckAndMutateRow_NoRetry_FalseMutations +--- PASS: TestCheckAndMutateRow_NoRetry_FalseMutations (0.03s) +=== RUN TestCheckAndMutateRow_Generic_MultiStreams +[Servr log] 2025/09/15 17:19:59 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:19:59 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:19:59 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:19:59 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:19:59 There is 2s sleep on the server side + test_workflow.go:703: The requests were received within 1ms +--- PASS: TestCheckAndMutateRow_Generic_MultiStreams (2.04s) +=== RUN TestCheckAndMutateRow_NoRetry_TransientError +--- PASS: TestCheckAndMutateRow_NoRetry_TransientError (0.02s) +=== RUN TestCheckAndMutateRow_Generic_CloseClient +[Servr log] 2025/09/15 17:20:01 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:01 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:01 There is 2s sleep on the server side +--- PASS: TestCheckAndMutateRow_Generic_CloseClient (2.03s) +=== RUN TestCheckAndMutateRow_Generic_DeadlineExceeded +[Servr log] 2025/09/15 17:20:03 There is 10s sleep on the server side +--- PASS: TestCheckAndMutateRow_Generic_DeadlineExceeded (2.02s) +=== RUN TestExecuteQuery_EmptyResponse +--- PASS: TestExecuteQuery_EmptyResponse (0.05s) +=== RUN TestExecuteQuery_SingleSimpleRow +--- PASS: TestExecuteQuery_SingleSimpleRow (0.03s) +=== RUN TestExecuteQuery_TypesTest +--- PASS: TestExecuteQuery_TypesTest (0.06s) +=== RUN TestExecuteQuery_NullsTest +--- PASS: TestExecuteQuery_NullsTest (0.04s) +=== RUN TestExecuteQuery_NestedNullsTest +--- PASS: TestExecuteQuery_NestedNullsTest (0.05s) +=== RUN TestExecuteQuery_MapAllowsDuplicateKey +--- PASS: TestExecuteQuery_MapAllowsDuplicateKey (0.04s) +=== RUN TestExecuteQuery_QueryParams +--- PASS: TestExecuteQuery_QueryParams (0.05s) +=== RUN TestExecuteQuery_ChunkingTest +--- PASS: TestExecuteQuery_ChunkingTest (0.09s) +=== RUN TestExecuteQuery_BatchesTest +--- PASS: TestExecuteQuery_BatchesTest (0.13s) +=== RUN TestExecuteQuery_FailsOnEmptyMetadata +--- PASS: TestExecuteQuery_FailsOnEmptyMetadata (0.06s) +=== RUN TestExecuteQuery_FailsOnExecuteQueryMetadata +--- PASS: TestExecuteQuery_FailsOnExecuteQueryMetadata (0.05s) +=== RUN TestExecuteQuery_FailsOnInvalidType +--- PASS: TestExecuteQuery_FailsOnInvalidType (0.02s) +=== RUN TestExecuteQuery_FailsOnNotEnoughData +--- PASS: TestExecuteQuery_FailsOnNotEnoughData (0.07s) +=== RUN TestExecuteQuery_FailsOnNotEnoughDataWithCompleteRows +--- PASS: TestExecuteQuery_FailsOnNotEnoughDataWithCompleteRows (0.09s) +=== RUN TestExecuteQuery_FailsOnTypeMismatch +--- PASS: TestExecuteQuery_FailsOnTypeMismatch (0.04s) +=== RUN TestExecuteQuery_FailsOnTypeMismatchWithinMap +--- PASS: TestExecuteQuery_FailsOnTypeMismatchWithinMap (0.09s) +=== RUN TestExecuteQuery_FailsOnTypeMismatchWithinArray +--- PASS: TestExecuteQuery_FailsOnTypeMismatchWithinArray (0.06s) +=== RUN TestExecuteQuery_FailsOnTypeMismatchWithinStruct +--- PASS: TestExecuteQuery_FailsOnTypeMismatchWithinStruct (0.06s) +=== RUN TestExecuteQuery_FailsOnStructMissingField +--- PASS: TestExecuteQuery_FailsOnStructMissingField (0.04s) +=== RUN TestExecuteQuery_StructWithNoColumnNames +--- PASS: TestExecuteQuery_StructWithNoColumnNames (0.08s) +=== RUN TestExecuteQuery_StructWithDuplicateColumnNames +--- PASS: TestExecuteQuery_StructWithDuplicateColumnNames (0.10s) +=== RUN TestExecuteQuery_FailsOnSuccesfulStreamWithNoToken +--- PASS: TestExecuteQuery_FailsOnSuccesfulStreamWithNoToken (0.12s) +=== RUN TestExecuteQuery_HeadersAreSet +--- PASS: TestExecuteQuery_HeadersAreSet (0.10s) +=== RUN TestExecuteQuery_ExecuteQueryRespectsDeadline +[Servr log] 2025/09/15 17:20:07 There is 10s sleep on the server side +--- PASS: TestExecuteQuery_ExecuteQueryRespectsDeadline (2.06s) +=== RUN TestExecuteQuery_PrepareQueryRespectsDeadline +[Servr log] 2025/09/15 17:20:09 There is 10s sleep on the server side +--- PASS: TestExecuteQuery_PrepareQueryRespectsDeadline (2.03s) +=== RUN TestExecuteQuery_ConcurrentRequests +[Servr log] 2025/09/15 17:20:11 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:11 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:11 Request is not saved as the recorder runs out of capacity: 2 +[Servr log] 2025/09/15 17:20:11 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:11 Request is not saved as the recorder runs out of capacity: 2 +[Servr log] 2025/09/15 17:20:11 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:11 Request is not saved as the recorder runs out of capacity: 2 +[Servr log] 2025/09/15 17:20:11 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:13 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:13 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:13 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:15 There is 2s sleep on the server side +--- PASS: TestExecuteQuery_ConcurrentRequests (6.04s) +=== RUN TestExecuteQuery_CloseClient +[Servr log] 2025/09/15 17:20:17 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:17 There is 2s sleep on the server side +--- PASS: TestExecuteQuery_CloseClient (2.03s) +=== RUN TestExecuteQuery_RetryTest_FirstResponse +--- PASS: TestExecuteQuery_RetryTest_FirstResponse (0.13s) +=== RUN TestExecuteQuery_RetryTest_MidStream +--- PASS: TestExecuteQuery_RetryTest_MidStream (0.09s) +=== RUN TestExecuteQuery_RetryTest_TokenWithoutData +--- PASS: TestExecuteQuery_RetryTest_TokenWithoutData (0.14s) +=== RUN TestExecuteQuery_RetryTest_ErrorAfterFinalData +--- PASS: TestExecuteQuery_RetryTest_ErrorAfterFinalData (0.08s) +=== RUN TestExecuteQuery_RetryTest_ResetPartialBatch +--- PASS: TestExecuteQuery_RetryTest_ResetPartialBatch (0.09s) +=== RUN TestExecuteQuery_RetryTest_ResetCompleteBatch +--- PASS: TestExecuteQuery_RetryTest_ResetCompleteBatch (0.13s) +=== RUN TestExecuteQuery_ChecksumMismatch +--- PASS: TestExecuteQuery_ChecksumMismatch (0.02s) +=== RUN TestExecuteQuery_RetryTest_WithPlanRefresh +--- PASS: TestExecuteQuery_RetryTest_WithPlanRefresh (0.19s) +=== RUN TestExecuteQuery_PlanRefresh +--- PASS: TestExecuteQuery_PlanRefresh (0.14s) +=== RUN TestExecuteQuery_PlanRefresh_WithMetadataChange +--- PASS: TestExecuteQuery_PlanRefresh_WithMetadataChange (0.07s) +=== RUN TestExecuteQuery_PlanRefresh_AfterResumeTokenCausesError +--- PASS: TestExecuteQuery_PlanRefresh_AfterResumeTokenCausesError (0.03s) +=== RUN TestExecuteQuery_PlanRefresh_RespectsDeadline +[Servr log] 2025/09/15 17:20:20 There is 10s sleep on the server side +--- PASS: TestExecuteQuery_PlanRefresh_RespectsDeadline (2.03s) +=== RUN TestExecuteQuery_PlanRefresh_Retries +--- PASS: TestExecuteQuery_PlanRefresh_Retries (0.11s) +=== RUN TestExecuteQuery_PlanRefresh_RecoversAfterPermanentError +--- PASS: TestExecuteQuery_PlanRefresh_RecoversAfterPermanentError (0.07s) +=== RUN TestFeatureGap + feature_gap_test.go:34: Skip the check as --enable_features_all is false +--- PASS: TestFeatureGap (0.00s) +=== RUN TestMutateRow_Generic_Headers +res, err: status:{} +[status:{}] +--- PASS: TestMutateRow_Generic_Headers (0.01s) +=== RUN TestMutateRow_NoRetry_NonprintableByteKey +res, err: status:{} +[status:{}] +--- PASS: TestMutateRow_NoRetry_NonprintableByteKey (0.01s) +=== RUN TestMutateRow_NoRetry_MultipleMutations +res, err: status:{} +[status:{}] +--- PASS: TestMutateRow_NoRetry_MultipleMutations (0.01s) +=== RUN TestMutateRow_Generic_MultiStreams +[Servr log] 2025/09/15 17:20:23 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:23 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:23 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:23 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:23 There is 2s sleep on the server side +res, err: status:{} +res, err: status:{} +res, err: status:{} +res, err: status:{} +res, err: status:{} + test_workflow.go:703: The requests were received within 1ms +--- PASS: TestMutateRow_Generic_MultiStreams (2.03s) +=== RUN TestMutateRow_Generic_CloseClient +[Servr log] 2025/09/15 17:20:25 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:25 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:25 There is 2s sleep on the server side +res, err: status:{} +res, err: status:{} +res, err: status:{} +[Servr log] 2025/09/15 17:20:27 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:27 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:27 There is 2s sleep on the server side +res, err: status:{} +res, err: status:{} +res, err: status:{} + mutaterow_test.go:247: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/mutaterow_test.go:247 + Error: Not equal: + expected: 3 + actual : 6 + Test: TestMutateRow_Generic_CloseClient + mutaterow_test.go:259: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/mutaterow_test.go:259 + Error: Should NOT be empty, but was 0 + Test: TestMutateRow_Generic_CloseClient + mutaterow_test.go:259: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/mutaterow_test.go:259 + Error: Should NOT be empty, but was 0 + Test: TestMutateRow_Generic_CloseClient + mutaterow_test.go:259: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/mutaterow_test.go:259 + Error: Should NOT be empty, but was 0 + Test: TestMutateRow_Generic_CloseClient +--- FAIL: TestMutateRow_Generic_CloseClient (4.04s) +=== RUN TestMutateRow_Generic_DeadlineExceeded +[Servr log] 2025/09/15 17:20:29 There is 10s sleep on the server side +res, err: status:{code:4 message:"Total timeout of API google.bigtable.v2.Bigtable exceeded 2000 milliseconds before any response was received."} +[status:{code:4 message:"Total timeout of API google.bigtable.v2.Bigtable exceeded 2000 milliseconds before any response was received."}] +status:{code:4 message:"Total timeout of API google.bigtable.v2.Bigtable exceeded 2000 milliseconds before any response was received."} +code:4 message:"Total timeout of API google.bigtable.v2.Bigtable exceeded 2000 milliseconds before any response was received." +4 +--- PASS: TestMutateRow_Generic_DeadlineExceeded (2.03s) +=== RUN TestMutateRows_Generic_Headers +--- PASS: TestMutateRows_Generic_Headers (0.08s) +=== RUN TestMutateRows_NoRetry_NonTransientErrors +--- PASS: TestMutateRows_NoRetry_NonTransientErrors (0.01s) +=== RUN TestMutateRows_Generic_DeadlineExceeded +[Servr log] 2025/09/15 17:20:31 There is 10s sleep on the server side +--- PASS: TestMutateRows_Generic_DeadlineExceeded (2.02s) +=== RUN TestMutateRows_Retry_TransientErrors +--- PASS: TestMutateRows_Retry_TransientErrors (6.87s) +=== RUN TestMutateRows_Retry_ExponentialBackoff + mutaterows_test.go:346: Retry #1 delay: 2197ms + mutaterows_test.go:346: Retry #2 delay: 6496ms + mutaterows_test.go:346: Retry #3 delay: 14914ms +--- PASS: TestMutateRows_Retry_ExponentialBackoff (14.94s) +=== RUN TestMutateRows_Generic_MultiStreams +[Servr log] 2025/09/15 17:20:55 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:55 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:55 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:55 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:55 There is 2s sleep on the server side + test_workflow.go:703: The requests were received within 1ms +--- PASS: TestMutateRows_Generic_MultiStreams (2.04s) +=== RUN TestMutateRows_Generic_CloseClient +[Servr log] 2025/09/15 17:20:57 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:57 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:20:57 There is 2s sleep on the server side +--- PASS: TestMutateRows_Generic_CloseClient (2.03s) +=== RUN TestMutateRows_Retry_WithRoutingCookie + mutaterows_test.go:505: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/mutaterows_test.go:505 + Error: Should NOT be empty, but was [] + Test: TestMutateRows_Retry_WithRoutingCookie +--- FAIL: TestMutateRows_Retry_WithRoutingCookie (2.65s) +=== RUN TestMutateRows_Retry_WithRetryInfo +--- PASS: TestMutateRows_Retry_WithRetryInfo (2.81s) +=== RUN TestReadModifyWriteRow_Generic_Headers +--- PASS: TestReadModifyWriteRow_Generic_Headers (0.03s) +=== RUN TestReadModifyWriteRow_NoRetry_MultiValues +--- PASS: TestReadModifyWriteRow_NoRetry_MultiValues (0.02s) +=== RUN TestReadModifyWriteRow_Generic_MultiStreams +[Servr log] 2025/09/15 17:21:04 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:04 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:04 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:04 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:04 There is 2s sleep on the server side + test_workflow.go:703: The requests were received within 0ms +--- PASS: TestReadModifyWriteRow_Generic_MultiStreams (2.03s) +=== RUN TestReadModifyWriteRow_NoRetry_TransientError +--- PASS: TestReadModifyWriteRow_NoRetry_TransientError (0.01s) +=== RUN TestReadModifyWriteRow_Generic_CloseClient +[Servr log] 2025/09/15 17:21:06 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:06 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:06 There is 2s sleep on the server side +--- PASS: TestReadModifyWriteRow_Generic_CloseClient (2.03s) +=== RUN TestReadModifyWriteRow_Generic_DeadlineExceeded +[Servr log] 2025/09/15 17:21:08 There is 10s sleep on the server side + readmodifywriterow_test.go:395: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readmodifywriterow_test.go:395 + Error: Not equal: + expected: 4 + actual : 1 + Test: TestReadModifyWriteRow_Generic_DeadlineExceeded +--- FAIL: TestReadModifyWriteRow_Generic_DeadlineExceeded (2.02s) +=== RUN TestReadRow_Generic_Headers +--- PASS: TestReadRow_Generic_Headers (0.03s) +=== RUN TestReadRow_Generic_DeadlineExceeded +[Servr log] 2025/09/15 17:21:10 There is 10s sleep on the server side + test_workflow.go:135: The RPC to test proxy encountered error: rpc error: code = Internal desc = Error serializing response: .google.rpc.Status.details: array expected + readrow_test.go:118: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrow_test.go:118 + Error: Not equal: + expected: 1 + actual : 0 + Test: TestReadRow_Generic_DeadlineExceeded + readrow_test.go:121: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrow_test.go:121 + Error: Not equal: + expected: 4 + actual : 0 + Test: TestReadRow_Generic_DeadlineExceeded +--- FAIL: TestReadRow_Generic_DeadlineExceeded (2.02s) +=== RUN TestReadRow_NoRetry_CommitInSeparateChunk +--- PASS: TestReadRow_NoRetry_CommitInSeparateChunk (0.02s) +=== RUN TestReadRow_Generic_MultiStreams +[Servr log] 2025/09/15 17:21:12 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:12 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:12 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:12 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:12 There is 2s sleep on the server side + test_workflow.go:703: The requests were received within 0ms +--- PASS: TestReadRow_Generic_MultiStreams (2.02s) +=== RUN TestReadRow_Generic_CloseClient +[Servr log] 2025/09/15 17:21:14 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:14 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:14 There is 2s sleep on the server side +--- PASS: TestReadRow_Generic_CloseClient (2.04s) +=== RUN TestReadRow_Retry_WithRoutingCookie + readrow_test.go:357: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrow_test.go:357 + Error: Should NOT be empty, but was [] + Test: TestReadRow_Retry_WithRoutingCookie +--- FAIL: TestReadRow_Retry_WithRoutingCookie (0.04s) +=== RUN TestReadRow_Retry_WithRetryInfo + readrow_test.go:402: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrow_test.go:402 + Error: Should be true + Test: TestReadRow_Retry_WithRetryInfo + Messages: Expected retry to happen after 2ms, got 0ms +--- FAIL: TestReadRow_Retry_WithRetryInfo (0.05s) +=== RUN TestReadRows_Generic_Headers +--- PASS: TestReadRows_Generic_Headers (0.02s) +=== RUN TestReadRows_NoRetry_OutOfOrderError + readrows_test.go:113: The full error message is: A row key must be strictly increasing: {"labels":[],"rowKey":{"type":"Buffer","data":[114,111,119,45,48,51]},"familyName":{"value":"f"},"qualifier":{"value":{"type":"Buffer","data":[99,111,108]}},"timestampMicros":"0","value":{"type":"Buffer","data":[118,51]},"valueSize":0,"commitRow":true,"rowStatus":"commitRow"} +--- PASS: TestReadRows_NoRetry_OutOfOrderError (0.01s) +=== RUN TestReadRows_ReverseScans_FeatureFlag_Enabled + readrows_test.go:140: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:140 + Error: Expected nil, but got: &errors.errorString{s:"bigtable-features metadata missing"} + Test: TestReadRows_ReverseScans_FeatureFlag_Enabled + Messages: failed to decode client feature flags + readrows_test.go:141: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:141 + Error: Should be true + Test: TestReadRows_ReverseScans_FeatureFlag_Enabled + Messages: client must enable ReverseScans feature flag +--- FAIL: TestReadRows_ReverseScans_FeatureFlag_Enabled (0.02s) +=== RUN TestReadRows_NoRetry_OutOfOrderError_Reverse + readrows_test.go:168: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:168 + Error: "A row key must be strictly increasing: {\"labels\":[],\"rowKey\":{\"type\":\"Buffer\",\"data\":[114,111,119,45,48,49]},\"familyName\":{\"value\":\"f\"},\"qualifier\":{\"value\":{\"type\":\"Buffer\",\"data\":[99,111,108]}},\"timestampMicros\":\"0\",\"value\":{\"type\":\"Buffer\",\"data\":[118,49]},\"valueSize\":0,\"commitRow\":true,\"rowStatus\":\"commitRow\"}" does not contain "decreasing" + Test: TestReadRows_NoRetry_OutOfOrderError_Reverse + readrows_test.go:169: The full error message is: A row key must be strictly increasing: {"labels":[],"rowKey":{"type":"Buffer","data":[114,111,119,45,48,49]},"familyName":{"value":"f"},"qualifier":{"value":{"type":"Buffer","data":[99,111,108]}},"timestampMicros":"0","value":{"type":"Buffer","data":[118,49]},"valueSize":0,"commitRow":true,"rowStatus":"commitRow"} +--- FAIL: TestReadRows_NoRetry_OutOfOrderError_Reverse (0.02s) +=== RUN TestReadRows_NoRetry_ErrorAfterLastRow +--- PASS: TestReadRows_NoRetry_ErrorAfterLastRow (0.07s) +=== RUN TestReadRows_Retry_PausedScan + readrows_test.go:253: Skipping rows comparison: As this is a full table scan +--- PASS: TestReadRows_Retry_PausedScan (0.10s) +=== RUN TestReadRows_Retry_LastScannedRow +--- PASS: TestReadRows_Retry_LastScannedRow (0.15s) +=== RUN TestReadRows_Retry_LastScannedRow_Reverse + readrows_test.go:337: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:337 + Error: Not equal: + expected: 2 + actual : 1 + Test: TestReadRows_Retry_LastScannedRow_Reverse + readrows_test.go:338: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:338 + Error: Not equal: + expected: 2 + actual : 1 + Test: TestReadRows_Retry_LastScannedRow_Reverse + readrows_test.go:352: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:352 + Error: Should be true + Test: TestReadRows_Retry_LastScannedRow_Reverse +--- FAIL: TestReadRows_Retry_LastScannedRow_Reverse (0.10s) +=== RUN TestReadRows_Generic_MultiStreams +[Servr log] 2025/09/15 17:21:17 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:17 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:17 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:17 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:17 There is 2s sleep on the server side + test_workflow.go:703: The requests were received within 0ms +--- PASS: TestReadRows_Generic_MultiStreams (2.05s) +=== RUN TestReadRows_Retry_StreamReset +[Servr log] 2025/09/15 17:21:19 There is 10s sleep on the server side +--- PASS: TestReadRows_Retry_StreamReset (6.09s) +=== RUN TestReadRows_NoRetry_MultipleIndividualRowKeys +--- PASS: TestReadRows_NoRetry_MultipleIndividualRowKeys (0.02s) +=== RUN TestReadRows_NoRetry_EmptyTableNoRows +--- PASS: TestReadRows_NoRetry_EmptyTableNoRows (0.02s) +=== RUN TestReadRows_NoRetry_MultipleRowRanges +--- PASS: TestReadRows_NoRetry_MultipleRowRanges (0.02s) +=== RUN TestReadRows_NoRetry_ClosedStartUnspecifiedEnd +--- PASS: TestReadRows_NoRetry_ClosedStartUnspecifiedEnd (0.01s) +=== RUN TestReadRows_NoRetry_OpenEndUnspecifiedStart +--- PASS: TestReadRows_NoRetry_OpenEndUnspecifiedStart (0.04s) +=== RUN TestReadRows_Generic_CloseClient +[Servr log] 2025/09/15 17:21:25 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:25 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:25 There is 2s sleep on the server side +--- PASS: TestReadRows_Generic_CloseClient (2.04s) +=== RUN TestReadRows_Generic_DeadlineExceeded +[Servr log] 2025/09/15 17:21:27 There is 10s sleep on the server side +--- PASS: TestReadRows_Generic_DeadlineExceeded (2.02s) +=== RUN TestReadRows_Retry_WithRoutingCookie + readrows_test.go:862: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:862 + Error: Should NOT be empty, but was [] + Test: TestReadRows_Retry_WithRoutingCookie +--- FAIL: TestReadRows_Retry_WithRoutingCookie (0.14s) +=== RUN TestReadRows_Retry_WithRoutingCookie_MultipleErrorResponses + readrows_test.go:929: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:929 + Error: Should NOT be empty, but was [] + Test: TestReadRows_Retry_WithRoutingCookie_MultipleErrorResponses +--- FAIL: TestReadRows_Retry_WithRoutingCookie_MultipleErrorResponses (0.22s) +=== RUN TestReadRows_Retry_WithRetryInfo + readrows_test.go:996: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:996 + Error: Should be true + Test: TestReadRows_Retry_WithRetryInfo +--- FAIL: TestReadRows_Retry_WithRetryInfo (0.08s) +=== RUN TestReadRows_Retry_WithRetryInfo_MultipleErrorResponse + readrows_test.go:1047: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/readrows_test.go:1047 + Error: Should be true + Test: TestReadRows_Retry_WithRetryInfo_MultipleErrorResponse +--- FAIL: TestReadRows_Retry_WithRetryInfo_MultipleErrorResponse (0.27s) +=== RUN TestReadRows_Retry_WithRetryInfo_OverallDedaline +[Servr log] 2025/09/15 17:21:30 Request is not saved as the recorder runs out of capacity: 2 +--- PASS: TestReadRows_Retry_WithRetryInfo_OverallDedaline (0.18s) +=== RUN TestSampleRowKeys_Generic_Headers + samplerowkeys_test.go:75: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/samplerowkeys_test.go:75 + Error: "table_name=projects%2Fproject%2Finstances%2Finstance%2Ftables%2Ftable&app_profile_id=" does not contain "test_profile" + Test: TestSampleRowKeys_Generic_Headers +--- FAIL: TestSampleRowKeys_Generic_Headers (0.02s) +=== RUN TestSampleRowKeys_NoRetry_NoEmptyKey + samplerowkeys_test.go:104: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/samplerowkeys_test.go:104 + Error: Not equal: + expected: 2 + actual : 0 + Test: TestSampleRowKeys_NoRetry_NoEmptyKey +--- FAIL: TestSampleRowKeys_NoRetry_NoEmptyKey (0.02s) +=== RUN TestSampleRowKeys_Generic_MultiStreams +[Servr log] 2025/09/15 17:21:30 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:30 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:30 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:30 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:30 There is 2s sleep on the server side + test_workflow.go:703: The requests were received within 1ms +--- PASS: TestSampleRowKeys_Generic_MultiStreams (2.04s) +=== RUN TestSampleRowKeys_Generic_CloseClient +[Servr log] 2025/09/15 17:21:32 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:32 There is 2s sleep on the server side +[Servr log] 2025/09/15 17:21:32 There is 2s sleep on the server side + samplerowkeys_test.go:210: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/samplerowkeys_test.go:210 + Error: Should NOT be empty, but was 0 + Test: TestSampleRowKeys_Generic_CloseClient + samplerowkeys_test.go:210: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/samplerowkeys_test.go:210 + Error: Should NOT be empty, but was 0 + Test: TestSampleRowKeys_Generic_CloseClient + samplerowkeys_test.go:210: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/samplerowkeys_test.go:210 + Error: Should NOT be empty, but was 0 + Test: TestSampleRowKeys_Generic_CloseClient +--- FAIL: TestSampleRowKeys_Generic_CloseClient (2.04s) +=== RUN TestSampleRowKeys_Generic_DeadlineExceeded +[Servr log] 2025/09/15 17:21:34 There is 10s sleep on the server side +--- PASS: TestSampleRowKeys_Generic_DeadlineExceeded (2.07s) +=== RUN TestSampleRowKeys_Retry_WithRoutingCookie + test_workflow.go:669: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/test_workflow.go:669 + /Users/mzp/git/cloud-bigtable-clients-test/tests/samplerowkeys_test.go:274 + Error: Should be empty, but was 14 + Test: TestSampleRowKeys_Retry_WithRoutingCookie + samplerowkeys_test.go:276: + Error Trace: /Users/mzp/git/cloud-bigtable-clients-test/tests/samplerowkeys_test.go:276 + Error: Not equal: + expected: 1 + actual : 0 + Test: TestSampleRowKeys_Retry_WithRoutingCookie