Eine aufbereitete Darstellung der Quelle

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

Benutzer

SSL isolation_main.c

  Sprache: C
 

/*-------------------------------------------------------------------------
 *
 * isolation_main --- pg_regress test launcher for isolation tests
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/test/isolation/isolation_main.c
 *
 *-------------------------------------------------------------------------
 */


#include "postgres_fe.h"

#include "lib/stringinfo.h"
#include "pg_regress.h"

static char saved_argv0[MAXPGPATH];
static char isolation_exec[MAXPGPATH];
static bool looked_up_isolation_exec = false;

#define PG_ISOLATION_VERSIONSTR "isolationtester (PostgreSQL) " PG_VERSION "\n"

/*
 * start an isolation tester process for specified file (including
 * redirection), and return process ID
 */

static PID_TYPE
isolation_start_test(const char *testname,
      _stringlist **resultfiles,
      _stringlist **expectfiles,
      _stringlist **tags)
{
 PID_TYPE pid;
 char  infile[MAXPGPATH];
 char  outfile[MAXPGPATH];
 char  expectfile[MAXPGPATH];
 StringInfoData psql_cmd;
 char    *appnameenv;

 /* need to do the path lookup here, check isolation_init() for details */
 if (!looked_up_isolation_exec)
 {
  /* look for isolationtester binary */
  if (find_other_exec(saved_argv0, "isolationtester",
       PG_ISOLATION_VERSIONSTR, isolation_exec) != 0)
  {
   fprintf(stderr, _("could not find proper isolationtester binary\n"));
   exit(2);
  }
  looked_up_isolation_exec = true;
 }

 /*
  * Look for files in the output dir first, consistent with a vpath search.
  * This is mainly to create more reasonable error messages if the file is
  * not found.  It also allows local test overrides when running pg_regress
  * outside of the source tree.
 */

 snprintf(infile, sizeof(infile), "%s/specs/%s.spec",
    outputdir, testname);
 if (!file_exists(infile))
  snprintf(infile, sizeof(infile), "%s/specs/%s.spec",
     inputdir, testname);

 snprintf(outfile, sizeof(outfile), "%s/results/%s.out",
    outputdir, testname);

 snprintf(expectfile, sizeof(expectfile), "%s/expected/%s.out",
    outputdir, testname);
 if (!file_exists(expectfile))
  snprintf(expectfile, sizeof(expectfile), "%s/expected/%s.out",
     inputdir, testname);

 add_stringlist_item(resultfiles, outfile);
 add_stringlist_item(expectfiles, expectfile);

 initStringInfo(&psql_cmd);

 if (launcher)
  appendStringInfo(&psql_cmd, "%s ", launcher);

 appendStringInfo(&psql_cmd,
      "\"%s\" \"dbname=%s\" < \"%s\" > \"%s\" 2>&1",
      isolation_exec,
      dblist->str,
      infile,
      outfile);

 appnameenv = psprintf("isolation/%s", testname);
 setenv("PGAPPNAME", appnameenv, 1);
 free(appnameenv);

 pid = spawn_process(psql_cmd.data);

 if (pid == INVALID_PID)
 {
  fprintf(stderr, _("could not start process for test %s\n"),
    testname);
  exit(2);
 }

 unsetenv("PGAPPNAME");

 pfree(psql_cmd.data);

 return pid;
}

static void
isolation_init(int argc, char **argv)
{
 size_t  argv0_len;

 /*
  * We unfortunately cannot do the find_other_exec() lookup to find the
  * "isolationtester" binary here.  regression_main() calls the
  * initialization functions before parsing the commandline arguments and
  * thus hasn't changed the library search path at this point which in turn
  * can cause the "isolationtester -V" invocation that find_other_exec()
  * does to fail since it's linked to libpq.  So we instead copy argv[0]
  * and do the lookup the first time through isolation_start_test().
 */

 argv0_len = strlcpy(saved_argv0, argv[0], MAXPGPATH);
 if (argv0_len >= MAXPGPATH)
 {
  fprintf(stderr, _("path for isolationtester executable is longer than %d bytes\n"),
    (int) (MAXPGPATH - 1));
  exit(2);
 }

 /* set default regression database name */
 add_stringlist_item(&dblist, "isolation_regression");
}

int
main(int argc, char *argv[])
{
 return regression_main(argc, argv,
         isolation_init,
         isolation_start_test,
         NULL /* no postfunc needed */ );
}

Messung V0.5 in Prozent
C=87 H=94 G=90

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet am  2026-08-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=141584
#Domains=752002