OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
firebase
/
vendor
/
google
/
gax
/
tests
/
Tests
/
Unit
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/12/2024 10:35:16 AM
rwxr-xr-x
📄
AgentHeaderTest.php
5.89 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
ApiExceptionTest.php
22.46 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
ApiStatusTest.php
5.41 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
ArrayTraitTest.php
5.71 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
BidiStreamTest.php
11.36 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
ClientOptionsTraitTest.php
20.93 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
ClientStreamTest.php
6.04 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
CredentialsWrapperTest.php
24.32 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
FixedSizeCollectionTest.php
7.5 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
GapicClientTraitTest.php
62.45 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
GeneratedTestTest.php
4.5 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
GrpcSupportTraitTest.php
1.49 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
InsecureCredentialsWrapperTest.php
3.1 KB
08/12/2024 10:35:16 AM
rw-r--r--
📁
Middleware
-
08/12/2024 10:36:19 AM
rwxr-xr-x
📄
MyMessage.php
743 bytes
08/12/2024 10:35:16 AM
rw-r--r--
📄
OperationResponseTest.php
16.37 KB
08/12/2024 10:35:16 AM
rw-r--r--
📁
Options
-
08/12/2024 10:36:19 AM
rwxr-xr-x
📄
PageStreamingDescriptorTest.php
2.16 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
PageTest.php
5.44 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
PagedListResponseTest.php
5.69 KB
08/12/2024 10:35:16 AM
rw-r--r--
📄
PathTemplateTest.php
9.19 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
ProtobufBandaidTest.php
1.15 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
ProtobufExtensionTest.php
2.17 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
RequestBuilderTest.php
17.19 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
RequestParamsHeaderDescriptorTest.php
3.28 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
ResourceHelperTraitTest.php
4.01 KB
08/12/2024 10:35:17 AM
rw-r--r--
📁
ResourceTemplate
-
08/12/2024 10:36:19 AM
rwxr-xr-x
📄
RetrySettingsTest.php
14.3 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
SerializerTest.php
10.21 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
ServerStreamTest.php
7.4 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
ServiceAddressTraitTest.php
2.2 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
TestTrait.php
4.72 KB
08/12/2024 10:35:17 AM
rw-r--r--
📁
Transport
-
08/12/2024 10:36:38 AM
rwxr-xr-x
📄
UriTraitTest.php
2.45 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
ValidationTraitTest.php
2.17 KB
08/12/2024 10:35:17 AM
rw-r--r--
📄
VersionTest.php
1.89 KB
08/12/2024 10:35:17 AM
rw-r--r--
📁
testdata
-
08/12/2024 10:36:45 AM
rwxr-xr-x
Editing: RetrySettingsTest.php
Close
<?php /* * Copyright 2017 Google LLC * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ namespace Google\ApiCore\Tests\Unit; use Google\ApiCore\RetrySettings; use Google\ApiCore\ValidationException; use PHPUnit\Framework\TestCase; class RetrySettingsTest extends TestCase { const SERVICE_NAME = 'test.interface.v1.api'; private static function buildInputConfig() { $contents = file_get_contents(__DIR__ . '/testdata/test_service_client_config.json'); return json_decode($contents, true); } private static function buildInvalidInputConfig() { $contents = file_get_contents(__DIR__ . '/testdata/test_service_invalid_client_config.json'); return json_decode($contents, true); } public function testConstructSettings() { $inputConfig = RetrySettingsTest::buildInputConfig(); $defaultRetrySettings = RetrySettings::load( RetrySettingsTest::SERVICE_NAME, $inputConfig ); $simpleMethod = $defaultRetrySettings['SimpleMethod']; $this->assertTrue($simpleMethod->retriesEnabled()); $this->assertEquals(40000, $simpleMethod->getNoRetriesRpcTimeoutMillis()); $this->assertEquals(['DEADLINE_EXCEEDED', 'UNAVAILABLE'], $simpleMethod->getRetryableCodes()); $this->assertEquals(100, $simpleMethod->getInitialRetryDelayMillis()); $pageStreamingMethod = $defaultRetrySettings['PageStreamingMethod']; $this->assertEquals(['INTERNAL'], $pageStreamingMethod->getRetryableCodes()); $timeoutOnlyMethod = $defaultRetrySettings['TimeoutOnlyMethod']; $this->assertFalse($timeoutOnlyMethod->retriesEnabled()); $this->assertEquals(40000, $timeoutOnlyMethod->getNoRetriesRpcTimeoutMillis()); $this->assertEquals(RetrySettings::DEFAULT_MAX_RETRIES, $simpleMethod->getMaxRetries()); } public function testLoadInvalid() { $inputConfig = RetrySettingsTest::buildInvalidInputConfig(); $this->expectException(ValidationException::class); RetrySettings::load( RetrySettingsTest::SERVICE_NAME, $inputConfig ); } public function testDisableRetries() { $inputConfig = RetrySettingsTest::buildInputConfig(); $defaultRetrySettings = RetrySettings::load( RetrySettingsTest::SERVICE_NAME, $inputConfig, true ); $simpleMethod = $defaultRetrySettings['SimpleMethod']; $this->assertFalse($simpleMethod->retriesEnabled()); $this->assertEquals(40000, $simpleMethod->getNoRetriesRpcTimeoutMillis()); $pageStreamingMethod = $defaultRetrySettings['PageStreamingMethod']; $this->assertEquals(['INTERNAL'], $pageStreamingMethod->getRetryableCodes()); $timeoutOnlyMethod = $defaultRetrySettings['TimeoutOnlyMethod']; $this->assertFalse($timeoutOnlyMethod->retriesEnabled()); $this->assertEquals(40000, $timeoutOnlyMethod->getNoRetriesRpcTimeoutMillis()); } public function testRetrySettingsMissingFields() { $this->expectException(ValidationException::class); new RetrySettings([ 'initialRetryDelayMillis' => 100, 'retryDelayMultiplier' => 1.3, // Missing field: //'maxRetryDelayMillis' => 400, 'initialRpcTimeoutMillis' => 150, 'rpcTimeoutMultiplier' => 2, 'maxRpcTimeoutMillis' => 600, 'totalTimeoutMillis' => 2000 ]); } /** * @dataProvider retrySettingsProvider * @param $settings * @param $expectedValues */ public function testRetrySettings($settings, $expectedValues) { $retrySettings = new RetrySettings($settings); $this->compare($retrySettings, $expectedValues); } /** * @dataProvider withRetrySettingsProvider * @param $settings * @param $withSettings * @param $expectedValues */ public function testWith($settings, $withSettings, $expectedValues) { $retrySettings = new RetrySettings($settings); $withRetrySettings = $retrySettings->with($withSettings); $this->compare($withRetrySettings, $expectedValues); } public function testLogicalTimeout() { $timeout = 10000; $expectedValues = [ 'initialRpcTimeoutMillis' => $timeout, 'maxRpcTimeoutMillis' => $timeout, 'totalTimeoutMillis' => $timeout, 'noRetriesRpcTimeoutMillis' => $timeout, 'rpcTimeoutMultiplier' => 1.0 ]; $timeoutSettings = RetrySettings::logicalTimeout($timeout); $this->assertSame( $expectedValues, $timeoutSettings ); } private function compare(RetrySettings $retrySettings, $expectedValues) { $this->assertSame( $expectedValues['initialRetryDelayMillis'], $retrySettings->getInitialRetryDelayMillis() ); $this->assertSame( $expectedValues['retryDelayMultiplier'], $retrySettings->getRetryDelayMultiplier() ); $this->assertSame( $expectedValues['maxRetryDelayMillis'], $retrySettings->getMaxRetryDelayMillis() ); $this->assertSame( $expectedValues['rpcTimeoutMultiplier'], $retrySettings->getRpcTimeoutMultiplier() ); $this->assertSame( $expectedValues['maxRpcTimeoutMillis'], $retrySettings->getMaxRpcTimeoutMillis() ); $this->assertSame( $expectedValues['totalTimeoutMillis'], $retrySettings->getTotalTimeoutMillis() ); $this->assertSame( $expectedValues['retryableCodes'], $retrySettings->getRetryableCodes() ); $this->assertSame( $expectedValues['retriesEnabled'], $retrySettings->retriesEnabled() ); $this->assertSame( $expectedValues['noRetriesRpcTimeoutMillis'], $retrySettings->getNoRetriesRpcTimeoutMillis() ); } public function retrySettingsProvider() { $defaultSettings = [ 'initialRetryDelayMillis' => 100, 'retryDelayMultiplier' => 1.3, 'maxRetryDelayMillis' => 400, 'initialRpcTimeoutMillis' => 150, 'rpcTimeoutMultiplier' => 2, 'maxRpcTimeoutMillis' => 600, 'totalTimeoutMillis' => 2000, 'retryableCodes' => [1], ]; $defaultExpectedValues = [ 'initialRetryDelayMillis' => 100, 'retryDelayMultiplier' => 1.3, 'maxRetryDelayMillis' => 400, 'initialRpcTimeoutMillis' => 150, 'rpcTimeoutMultiplier' => 2, 'maxRpcTimeoutMillis' => 600, 'totalTimeoutMillis' => 2000, 'retryableCodes' => [1], 'noRetriesRpcTimeoutMillis' => 150, 'retriesEnabled' => true, 'maxRetries' => RetrySettings::DEFAULT_MAX_RETRIES, 'retryFunction' => null, ]; return [ [ // Test with retryableCodes, without retriesEnabled or noRetriesRpcTimeoutMillis $defaultSettings, $defaultExpectedValues ], [ // Test with empty retryableCodes, without retriesEnabled or noRetriesRpcTimeoutMillis [ 'retryableCodes' => [], ] + $defaultSettings, [ 'retryableCodes' => [], 'retriesEnabled' => false ] + $defaultExpectedValues ], [ // Test with retryableCodes, with retriesEnabled=false [ 'retriesEnabled' => false ] + $defaultSettings, [ 'retriesEnabled' => false ] + $defaultExpectedValues ], [ // Test with empty retryableCodes, with retriesEnabled=true [ 'retryableCodes' => [], 'retriesEnabled' => true ] + $defaultSettings, [ 'retryableCodes' => [], 'retriesEnabled' => true ] + $defaultExpectedValues ], [ // Test with noRetriesRpcTimeoutMillis [ 'noRetriesRpcTimeoutMillis' => 151, ] + $defaultSettings, [ 'noRetriesRpcTimeoutMillis' => 151, ] + $defaultExpectedValues ], [ // Test with a custom retry function [ 'retryFunction' => function($ex, $options) {return true;} ] + $defaultSettings, [ 'retryFunction' => function($ex, $options) {return true;} ] + $defaultExpectedValues ], [ // Test with a maxRetries value [ 'maxRetries' => 2 ] + $defaultSettings, [ 'maxRetries' => 2 ] + $defaultExpectedValues ] ]; } public function withRetrySettingsProvider() { $defaultSettings = [ 'initialRetryDelayMillis' => 1, 'retryDelayMultiplier' => 1, 'maxRetryDelayMillis' => 1, 'initialRpcTimeoutMillis' => 1, 'rpcTimeoutMultiplier' => 1, 'maxRpcTimeoutMillis' => 1, 'totalTimeoutMillis' => 1, 'retryableCodes' => [1], 'noRetriesRpcTimeoutMillis' => 1, 'retriesEnabled' => true, ]; $defaultExpectedValues = [ 'initialRetryDelayMillis' => 1, 'retryDelayMultiplier' => 1, 'maxRetryDelayMillis' => 1, 'initialRpcTimeoutMillis' => 1, 'rpcTimeoutMultiplier' => 1, 'maxRpcTimeoutMillis' => 1, 'totalTimeoutMillis' => 1, 'retryableCodes' => [1], 'noRetriesRpcTimeoutMillis' => 1, 'retriesEnabled' => true, 'maxRetries' => RetrySettings::DEFAULT_MAX_RETRIES, 'retryFunction' => null, ]; return [ [ // Test with no changes $defaultSettings, [], $defaultExpectedValues ], [ // Test disable retries $defaultSettings, [ 'retriesEnabled' => false, ], [ 'retriesEnabled' => false, ] + $defaultExpectedValues ], [ // Test change all settings $defaultSettings, [ 'initialRetryDelayMillis' => 2, 'retryDelayMultiplier' => 3, 'maxRetryDelayMillis' => 4, 'initialRpcTimeoutMillis' => 5, 'rpcTimeoutMultiplier' => 6, 'maxRpcTimeoutMillis' => 7, 'totalTimeoutMillis' => 8, 'retryableCodes' => [9], 'noRetriesRpcTimeoutMillis' => 10, 'retriesEnabled' => false, ], [ 'initialRetryDelayMillis' => 2, 'retryDelayMultiplier' => 3, 'maxRetryDelayMillis' => 4, 'initialRpcTimeoutMillis' => 5, 'rpcTimeoutMultiplier' => 6, 'maxRpcTimeoutMillis' => 7, 'totalTimeoutMillis' => 8, 'retryableCodes' => [9], 'noRetriesRpcTimeoutMillis' => 10, 'retriesEnabled' => false, ] ], [ // Test with a custom retry function $defaultSettings, [ 'retryFunction' => function($ex, $options) {return true;} ], [ 'retryFunction' => function($ex, $options) {return true;} ] + $defaultExpectedValues ], [ // Test with a maxRetries value $defaultSettings, [ 'maxRetries' => 2 ], [ 'maxRetries' => 2 ] + $defaultExpectedValues ] ]; } }