Test Failed
Push — master ( eef45f...e0c5e8 )
by P.R.
04:35
created

MySqlDefaultConnectorTest   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 132
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 2

Importance

Changes 0
Metric Value
wmc 10
lcom 2
cbo 2
dl 0
loc 132
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace SetBased\Stratum\MySql\Test;
5
6
use PHPUnit\Framework\TestCase;
7
use SetBased\Stratum\MySql\Exception\MySqlConnectFailedException;
8
use SetBased\Stratum\MySql\MySqlDefaultConnector;
9
10
/**
11
 * Test cases class MySqlDefaultConnector.
12
 */
13
class MySqlDefaultConnectorTest extends TestCase
14
{
15
  //--------------------------------------------------------------------------------------------------------------------
16
  /**
17
   * Test connection to a non-existing server.
18
   */
19
  public function testConnectFailed()
20
  {
21
    $connector = new MySqlDefaultConnector('localhost', 'no-such-user', 'test', 'test');
22
23
    $this->expectException(MySqlConnectFailedException::class);
24
    $connector->connect();
25
  }
26
27
  //--------------------------------------------------------------------------------------------------------------------
28
  /**
29
   * Test disconnect when connect to a server failed.
30
   */
31
  public function testDisconnectConnectFailed()
32
  {
33
    $connector = new MySqlDefaultConnector('localhost', 'no-such-user', 'test', 'test');
34
    try
35
    {
36
      $connector->connect();
37
    }
38
    catch (MySqlConnectFailedException $exception)
39
    {
40
      // Ignore error.
41
    }
42
43
    $connector->disconnect();
44
    self::assertTrue(true);
45
  }
46
47
  //--------------------------------------------------------------------------------------------------------------------
48
  /**
49
   * Test disconnect when connected.
50
   */
51
  public function testDisconnectConnected()
52
  {
53
    $connector = new MySqlDefaultConnector('localhost', 'test', 'test', 'test');
54
    $connector->connect();
55
    $connector->disconnect();
56
    self::assertTrue(true);
57
  }
58
59
  //--------------------------------------------------------------------------------------------------------------------
60
  /**
61
   * Test disconnect when server has gone.
62
   */
63
  public function testDisconnectNoServer()
64
  {
65
    $connector = new MySqlDefaultConnector('localhost', 'test', 'test', 'test');
66
    $connector->connect();
67
68
    exec('sudo systemctl stop mysql || sudo service mysql stop');
69
70
    $connector->disconnect();
71
    self::assertTrue(true);
72
73
    exec('sudo systemctl start mysql || sudo service mysql start');
74
  }
75
76
  //--------------------------------------------------------------------------------------------------------------------
77
  /**
78
   * Test disconnect when never connected to a server.
79
   */
80
  public function testDisconnectNotConnected()
81
  {
82
    $connector = new MySqlDefaultConnector('localhost', 'test', 'test', 'test');
83
    $connector->disconnect();
84
    self::assertTrue(true);
85
  }
86
87
  //--------------------------------------------------------------------------------------------------------------------
88
  /**
89
   * Test isAlive when never disconnected.
90
   */
91
  public function testIsAliveDisconnected()
92
  {
93
    $connector = new MySqlDefaultConnector('localhost', 'test', 'test', 'test');
94
    $connector->connect();
95
    $connector->disconnect();
96
97
    $isAlive = $connector->isAlive();
98
    self::assertFalse($isAlive);
99
  }
100
101
  //--------------------------------------------------------------------------------------------------------------------
102
  /**
103
   * Test isAlive with alive connection.
104
   */
105
  public function testIsAliveIsAlive()
106
  {
107
    $connector = new MySqlDefaultConnector('localhost', 'test', 'test', 'test');
108
109
    $connector->connect();
110
    $isAlive = $connector->isAlive();
111
    self::assertTrue($isAlive);
112
  }
113
114
  //--------------------------------------------------------------------------------------------------------------------
115
  /**
116
   * Test isAlive when server has gone.
117
   */
118
  public function testIsAliveNoServer()
119
  {
120
    $connector = new MySqlDefaultConnector('localhost', 'test', 'test', 'test');
121
    $connector->connect();
122
123
    exec('sudo systemctl stop mysql || sudo service mysql stop');
124
125
    $isAlive = $connector->isAlive();
126
    self::assertFalse($isAlive);
127
128
    exec('sudo systemctl start mysql || sudo service mysql start');
129
  }
130
131
  //--------------------------------------------------------------------------------------------------------------------
132
  /**
133
   * Test isAlive when never connected.
134
   */
135
  public function testIsAliveNotConnected()
136
  {
137
    $connector = new MySqlDefaultConnector('localhost', 'test', 'test', 'test');
138
139
    $isAlive = $connector->isAlive();
140
    self::assertFalse($isAlive);
141
  }
142
143
  //--------------------------------------------------------------------------------------------------------------------
144
}
145
146
//----------------------------------------------------------------------------------------------------------------------
147