1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
<?xml version="1.0" encoding="utf-8"?>
<test>
<name>RT on *nix: watchdog and replaying binlog</name>
<requires>
<non-windows/>
<watchdog/>
</requires>
<config>
searchd
{
<searchd_settings/>
workers = threads
<dynamic>
<variant>
binlog_path =
</variant>
<variant>
binlog_path = data
</variant>
</dynamic>
}
index crc
{
type = rt
path = data/crc
rt_field = content
rt_attr_uint = idd
dict = crc
}
index kw
{
type = rt
path = data/kw
rt_field = content
rt_attr_uint = idd
dict = keywords
min_prefix_len = 1
}
source src_test
{
type = mysql
<sql_settings/>
sql_query = select 1, 11 as idd, 'dummy'
sql_attr_uint = idd
}
index test
{
source = src_test
path = <data_path/>/test
docinfo = extern
dict = crc
}
</config>
<custom_test><![CDATA[
$results = array();
$make_sock = create_function ( '&$results', '
global $sd_address, $sd_sphinxql_port, $error;
$sockStr = "$sd_address:$sd_sphinxql_port";
if ($sd_address == "localhost")
$sockStr = "127.0.0.1:$sd_sphinxql_port";
$sock = @mysql_connect ( $sockStr,"","", true );
if ( $sock === false )
{
$results[] = "error: can not connect to searchd: " . @mysql_errno ( $sock ) . " : " . @mysql_error ( $sock );
}
return $sock;
');
$query = create_function ( '&$results, $q, $sock', '
$res = @mysql_query ( $q, $sock );
if ($res===true)
{
$results[] = "query: " . $q . "; total_affected:" . mysql_affected_rows($sock);
}
else if ($res===false)
{
$results[] = "query: " . $q . "; error:" . @mysql_errno ( $sock ) . " : " . @mysql_error ( $sock );
return;
}
else
{
$results[] = "query: " . $q . "; total_rows:" . @mysql_num_rows($res);
while ($row = @mysql_fetch_array($res, MYSQL_ASSOC))
{
$foo = array();
foreach ($row as $key => $value)
{
$results[] = $key . " => " . $value;
}
}
}
');
$sock = $make_sock( $results );
if ( $sock === false )
{
return;
}
// regression
// binlog crashes on replayng commit with delete only statement
$query ( $results, "DELETE FROM kw WHERE id=1000", $sock);
$query ( $results, "INSERT INTO crc VALUES (1, 'test work', 11)", $sock);
$query ( $results, "INSERT INTO kw VALUES (100, 'test stuff', 111)", $sock);
$query ( $results, "SELECT * FROM crc,kw WHERE MATCH('test')", $sock );
$query ( $results, "SELECT * FROM crc,kw", $sock );
$query ( $results, "SELECT * FROM test", $sock );
$query ( $results, "UPDATE test SET idd=111 WHERE id=1", $sock );
$query ( $results, "SELECT * FROM test", $sock );
$client->FlushAttributes();
$results[]= "killing";
KillSearchd ('config.conf', 'searchd.pid','KILL',false);
usleep ( 150000 );
StartSearchd ( "config.conf", "error.txt", 'searchd.pid', $error, true );
usleep ( 150000 );
$results[] = "connecting again";
$sock = $make_sock( $results );
if ( $sock === false )
{
return;
}
$query ( $results, "SELECT * FROM crc,kw WHERE MATCH('test')", $sock );
$query ( $results, "SELECT * FROM crc,kw", $sock );
$query ( $results, "SELECT * FROM test", $sock );
]]></custom_test>
</test>
|