Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  rpl_assert.inc   Sprache: Delphi

 

# ==== Purpose ====
#
# Check if a condition holds, fail with debug info if not.
#
# The condition is parsed before executed. The following constructs
# are supported:
#
#   [SQL STATEMENT, COLUMN, ROW]
#     The square bracket is replaced by the result from SQL STATEMENT,
#     in the given COLUMN and ROW.
#
#   <1>
#     This is a shorthand for the result of the first executed square
#     bracket. <2> is a shorthand for the second executed square
#     bracket, and so on.
#
# ==== Usage ====
#
# --let $assert_text= Relay_Log_Pos must be smaller than pos.
# --let $assert_cond= [SHOW SLAVE STATUS, Relay_Log_Pos, 1] >= $min_pos AND <1> <= $max_pos
# [--let $assert_quiet= 1]
# [--let $rpl_debug= 1]
# --source include/rpl_assert.inc
#
# Parameters:
#
# $assert_text
#   Text that describes what is being checked. By default, this text
#   is written to the query log.
#
# $assert_cond
#   Condition to check.  See above for details about the format.  The
#   condition will be executed as `SELECT $assert_cond`.  Note: this
#   condition is parsed using SQL statements, quoted inside single
#   quotes, so it must not contain single quotes itself (use double
#   quotes for strings).
#
# $assert_quiet
#   Do not print $assert_text to the query log.
#
# $rpl_debug
#   Print extra debug info.


if ($rpl_debug)
{
  --echo # debug: assert_text='$assert_text' assert_cond='$assert_cond'
}

# Sanity-check input
if (`SELECT "$assert_text" = ""`)
{
  --die ERROR IN TEST: the mysqltest variable rpl_test must be set
}

# Evaluate square brackets in cond.
--let $_rpl_assert_substmt_number= 1
--let $_rpl_interpolated_cond= $assert_cond
--let $_rpl_assert_lbracket= `SELECT LOCATE('[', '$_rpl_interpolated_cond')`
while ($_rpl_assert_lbracket)
{
  # Get position of right bracket
  --let $_rpl_assert_rbracket= `SELECT LOCATE(']', '$_rpl_interpolated_cond')`
  if (!$_rpl_assert_rbracket)
  {
    --echo BUG IN TEST: Mismatching square brackets in assert_cond: '$assert_cond'
    --die BUG IN TEST: Mismatching square brackets in $assert_cond
  }
  # Get sub-statement and result of it
  --let $_rpl_assert_substmt= `SELECT SUBSTRING('$_rpl_interpolated_cond', $_rpl_assert_lbracket + 1, $_rpl_assert_rbracket - $_rpl_assert_lbracket - 1)`
  --let $_rpl_assert_substmt_result= query_get_value($_rpl_assert_substmt)
  if ($rpl_debug)
  {
    --echo # debug: sub-statement='$_rpl_assert_substmt' result='$rpl_assert_result'
  }
  # Replace sub-statement by its result
  --let $_rpl_interpolated_cond= `SELECT REPLACE('$_rpl_interpolated_cond', '[$_rpl_assert_substmt]', '$_rpl_assert_substmt_result')`
  # Replace result references by result
  --let $_rpl_interpolated_cond= `SELECT REPLACE('$_rpl_interpolated_cond', '<$_rpl_assert_substmt_number>', '$_rpl_assert_substmt_result')`

  --let $_rpl_assert_lbracket= `SELECT LOCATE('[', '$_rpl_interpolated_cond')`

  --inc $_rpl_assert_substmt_number
}

if ($rpl_debug)
{
  --echo # debug: interpolated_cond='$_rpl_interpolated_cond'
}

# Execute.
--let $_rpl_assert_result= `SELECT $_rpl_interpolated_cond`

if ($rpl_debug)
{
  --echo # debug: result='$_rpl_assert_result'
}

# Check.
if (!$_rpl_assert_result)
{
  --echo ######## Test assertion failed: $assert_text ########
  --echo Dumping debug info:
  --source include/show_rpl_debug_info.inc
  --echo Assertion text: '$assert_text'
  --echo Assertion condition: '$assert_cond'
  --echo Assertion condition, interpolated: '$_rpl_interpolated_cond'
  --echo Assertion result: '$_rpl_assert_result'
  --die Test assertion failed in rpl_assertion.inc
}

if (!$assert_quiet)
{
  --echo # Asserted this: $assert_text
}

--let $assert_text=
--let $assert_cond=

Messung V0.5 in Prozent
C=100 H=75 G=88

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126864
#Domains=1897691