<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.umiacs.umd.edu/adapt/index.php?action=history&amp;feed=atom&amp;title=SRB%3APerl_test.pl</id>
	<title>SRB:Perl test.pl - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umiacs.umd.edu/adapt/index.php?action=history&amp;feed=atom&amp;title=SRB%3APerl_test.pl"/>
	<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/adapt/index.php?title=SRB:Perl_test.pl&amp;action=history"/>
	<updated>2026-04-07T13:51:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://wiki.umiacs.umd.edu/adapt/index.php?title=SRB:Perl_test.pl&amp;diff=2182&amp;oldid=prev</id>
		<title>Toaster at 17:33, 16 September 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/adapt/index.php?title=SRB:Perl_test.pl&amp;diff=2182&amp;oldid=prev"/>
		<updated>2008-09-16T17:33:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
#&lt;br /&gt;
# test script for perl srb module&lt;br /&gt;
#&lt;br /&gt;
# uncomment to use specified values instead of ~/.srb/.MdasEnv and ~/.srb/.MdasAuth&lt;br /&gt;
$mcat = &amp;#039;bodleian&amp;#039;;&lt;br /&gt;
$port = 6618;&lt;br /&gt;
#$password = &amp;#039;PASSWORD&amp;#039;;&lt;br /&gt;
$user = &amp;#039;toaster&amp;#039;;&lt;br /&gt;
$domain = &amp;#039;umiacs&amp;#039;;&lt;br /&gt;
$authscheme = &amp;#039;ENCRYPT1&amp;#039;;&lt;br /&gt;
$serverDn = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Values to test read/open/write/delete&lt;br /&gt;
#&lt;br /&gt;
# collection to dump file to&lt;br /&gt;
my $ingestcoll = &amp;#039;/home/toaster.umiacs&amp;#039;;&lt;br /&gt;
# collection to create under ingestcoll&lt;br /&gt;
my $newcollection = &amp;#039;testcoll&amp;#039;;&lt;br /&gt;
# destination object&lt;br /&gt;
my $ingestobj = &amp;#039;testfile2&amp;#039;;&lt;br /&gt;
# local file to ingest&lt;br /&gt;
my $localfile = &amp;#039;/tmp/testfile2&amp;#039;;&lt;br /&gt;
# resource to ingest into&lt;br /&gt;
my $resource = &amp;#039;bodleian-prod&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use srbcore;&lt;br /&gt;
&lt;br /&gt;
########################&lt;br /&gt;
# test connection functions&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;\n*************\nTesting connection functions\n*************\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#srbConnect&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Testing: srbConnect\n&amp;quot;;&lt;br /&gt;
my $conn = srbcore::srbConnect($mcat,$port,$password,$user,$domain,$authscheme,$serverDn);&lt;br /&gt;
my $connstatus = srbcore::clStatus($conn);&lt;br /&gt;
if ($connstatus == 0) {&lt;br /&gt;
  print &amp;quot;Connection Successful\n&amp;quot;;&lt;br /&gt;
} else { &lt;br /&gt;
  print &amp;quot;Connection Failed: $connstatus &amp;quot;.srbcore::clErrorMessage($conn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
  print srbcore::srbError($connstatus,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# test connection reset&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Testing: clReset\n&amp;quot;;&lt;br /&gt;
srbcore::clReset($conn);&lt;br /&gt;
if ($connstatus == 0) {&lt;br /&gt;
  print &amp;quot;Connection Reset Successful\n&amp;quot;;&lt;br /&gt;
} else { &lt;br /&gt;
  print &amp;quot;Connection Failed: $connstatus &amp;quot;.srbcore::clErrorMessage($conn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
  print srbcore::srbError($connstatus,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
########################&lt;br /&gt;
# test object creation, reading, deletion&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;\n*************\nTesting Object functions\n*************\n\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#srbObjCreate&lt;br /&gt;
#&lt;br /&gt;
my $datasize = (stat($file))[7];&lt;br /&gt;
$datasize = -1 unless $datasize;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Testing: srbObjCreate\n&amp;quot;;&lt;br /&gt;
my $objfd = srbcore::srbObjCreate($conn,$srbcore::MDAS_CATALOG,$ingestobj,&amp;#039;generic&amp;#039;,$resource, $ingestcoll,&amp;quot;&amp;quot;,$datasize);&lt;br /&gt;
print &amp;quot; result: fd $objfd\n&amp;quot;;&lt;br /&gt;
if ($objfd &amp;lt; 0) {&lt;br /&gt;
  print srbcore::srbError($objfd,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#srbObjWrite&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Writing to $ingestcoll/$ingestobj\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srbObjWrite\n&amp;quot;;&lt;br /&gt;
open(INPFILE,&amp;quot;$localfile&amp;quot;) or print &amp;quot;cannot open $localfile\n&amp;quot;;&lt;br /&gt;
my $buf,$bufsize;&lt;br /&gt;
while (($bufsize = read(INPFILE, $buf, 16384)) != 0) {&lt;br /&gt;
  print &amp;quot; read: $bufsize\n&amp;quot;;&lt;br /&gt;
  if (!defined($bufsize)) { &lt;br /&gt;
    print &amp;quot;Error reading $file\n&amp;quot;;&lt;br /&gt;
    exit 1;&lt;br /&gt;
  }&lt;br /&gt;
  my $srbwrite = srbcore::srbObjWrite($conn,$objfd,$buf,$bufsize);&lt;br /&gt;
  print &amp;quot; wrote: $srbwrite\n&amp;quot;;&lt;br /&gt;
  if ($srbwrite &amp;lt; 0) {&lt;br /&gt;
    print &amp;quot;Error writing: $srbwrite\n&amp;quot;;&lt;br /&gt;
    print srbcore::srbError($srbwrite,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
close(INPFILE);&lt;br /&gt;
#&lt;br /&gt;
#srbObjClose&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Testing: srbObjClose\n&amp;quot;;&lt;br /&gt;
my $closeres = srbcore::srbObjClose($conn,$objfd);&lt;br /&gt;
print &amp;quot; result: $closeres\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#srbObjRead&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Reading from $ingestcoll/$ingestobj\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srbObjRead\n&amp;quot;;&lt;br /&gt;
my $obj = srbcore::srbObjOpen($conn,$ingestobj,$srb::O_RDONLY,$ingestcoll);&lt;br /&gt;
if ($obj &amp;lt; 0) {&lt;br /&gt;
  print &amp;quot; Open failed: $obj\n&amp;quot;;&lt;br /&gt;
  print srbcore::clErrorMessage($conn);&lt;br /&gt;
  print srbcore::srbError($obj,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
# create a char * buffer that srbObjRead can write into&lt;br /&gt;
my $buf = &amp;quot;.&amp;quot; x 1025;&lt;br /&gt;
my $read = srbcore::srbObjRead($conn,$obj,$buf,length($buf));&lt;br /&gt;
print &amp;quot; read: $read&amp;quot;;;&lt;br /&gt;
while ($read &amp;gt; 0) {&lt;br /&gt;
  $printbuf = substr($buf,0,$read);&lt;br /&gt;
  last if ($read &amp;lt; 1025);&lt;br /&gt;
  my $buf = &amp;quot;.&amp;quot; x 1025;&lt;br /&gt;
  $read = srbcore::srbObjRead($conn,$obj,$buf,length($buf));&lt;br /&gt;
  print &amp;quot;, $read&amp;quot;;;&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;\n&amp;quot;;&lt;br /&gt;
if ($read &amp;lt; 0) { &lt;br /&gt;
  print &amp;quot; Read Error: $read fd: $obj\n&amp;quot;;&lt;br /&gt;
  print srbcore::srbError($read,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
srbcore::srbObjClose($conn,$obj);&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#srbModifyDataset&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Testing: srbModifyDataset\n&amp;quot;;&lt;br /&gt;
my $objmod = srbcore::srbModifyDataset($conn,$srbcore::MDAS_CATALOG,$ingestobj,$ingestcoll,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;test metadata&amp;quot;,$srbcore::D_INSERT_USER_DEFINED_STRING_META_DATA);&lt;br /&gt;
print &amp;quot; result: $objmod\n&amp;quot;;&lt;br /&gt;
if ($objmod &amp;lt; 0) {&lt;br /&gt;
  print srbcore::srbError($objmod,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#srbObjUnlink&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Deleting $ingestcoll/$ingestobj\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srbObjUnlink\n&amp;quot;;&lt;br /&gt;
my $objdel = srbcore::srbObjUnlink($conn,$ingestobj,$ingestcoll);&lt;br /&gt;
print &amp;quot; result: $objdel\n&amp;quot;;&lt;br /&gt;
if ($objdel &amp;lt; 0) {&lt;br /&gt;
  print srbcore::srbError($objdel,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
########################&lt;br /&gt;
# test collection items&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;\n*************\nTesting Collection functions\n*************\n\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# srbLsCollect - returns reference to array of items in directory&lt;br /&gt;
#                formatted same as srbListCollect&lt;br /&gt;
print &amp;quot;Testing: srbLsCollect\n&amp;quot;;&lt;br /&gt;
print &amp;quot; Listing of $ingestcoll\n&amp;quot;;&lt;br /&gt;
my $coll = srbcore::srbLsCollect ($conn, $ingestcoll);&lt;br /&gt;
foreach $i (@$coll) { print &amp;quot; - $i\n&amp;quot;; }&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# create collection&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Attempting to create $newcollection in $ingestcoll\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srbCreateCollect\n&amp;quot;;&lt;br /&gt;
my $collcreate = srbcore::srbCreateCollect($conn,$srbcore::MDAS_CATALOG,$ingestcoll,$newcollection);&lt;br /&gt;
print &amp;quot;  result: $collcreate\n&amp;quot;;&lt;br /&gt;
if ($collcreate &amp;lt; 0) {&lt;br /&gt;
  print srbcore::srbError($collcreate,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# remove collection through srbModifyCollect&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Attempting to remove $ingestcoll/$newcollection\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srbModifyCollect\n&amp;quot;;&lt;br /&gt;
my $collremove = srbcore::srbModifyCollect($conn,$srbcore::MDAS_CATALOG,&lt;br /&gt;
    &amp;quot;$ingestcoll/$newcollection&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,$srbcore::D_DELETE_COLL);&lt;br /&gt;
print &amp;quot;  result: $collremove\n&amp;quot;;&lt;br /&gt;
if ($collremove &amp;lt; 0) {&lt;br /&gt;
  print srbcore::srbError($collremove,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
########################&lt;br /&gt;
# Metadata tests&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;\n*************\nTesting Metadata functions\n*************\n\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Creating new search result\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: newsrbcore::srb_search_results(\$conn) \n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# create srb_search_reqults object&lt;br /&gt;
#&lt;br /&gt;
my $qresult = new srbcore::srb_search_results($conn);&lt;br /&gt;
&lt;br /&gt;
# searching in the srb required two arrays, qval and sval&lt;br /&gt;
#  qval - string array containing partial sql query for each item you &lt;br /&gt;
#         wish to search. &lt;br /&gt;
#         ie. $qval[$srbcore::DATA_NAME] = &amp;quot; = &amp;#039;testdb&amp;#039;&amp;quot;;&lt;br /&gt;
#         will seach DATA_NAME for anything that is equal to &amp;#039;testdb&amp;#039;&lt;br /&gt;
#  sval - array of ints used to select what columns are returned from a search&lt;br /&gt;
#         $sval[$srbcore::DATA_GRP_NAME] = 1 will cause DATA_GRP_NAME to &lt;br /&gt;
#         be returned.&lt;br /&gt;
my @qval,@sval;&lt;br /&gt;
&lt;br /&gt;
# Initialize qval and sval for searching&lt;br /&gt;
# select where DATA_GRP_NAME = &amp;#039;$ingestcoll&amp;#039;&lt;br /&gt;
$qval[$srbcore::DATA_GRP_NAME] = &amp;quot; = &amp;#039;$ingestcoll&amp;#039;&amp;quot;;&lt;br /&gt;
# we want DATA_GRP_ID and DATA_NAME returned to us&lt;br /&gt;
$sval[$srbcore::DATA_GRP_ID] = 1;&lt;br /&gt;
$sval[$srbcore::DATA_NAME] = 1;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#srbSearch = srbSearch(qval, sval,srb_search_results, items to return)&lt;br /&gt;
#                      &lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Testing: srbSearch\n&amp;quot;;&lt;br /&gt;
my $searchres = srbcore::srbSearch(\@qval, \@sval,$qresult,100);&lt;br /&gt;
print &amp;quot; result: $searchres\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# srb_search_results-&amp;gt;get_row&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Retrieving row for DATA_NAME\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srb_search_results-&amp;gt;get_row\n&amp;quot;;&lt;br /&gt;
my $resultlist = $qresult-&amp;gt;get_row($srbcore::DATA_NAME);&lt;br /&gt;
foreach $item (@$resultlist) {&lt;br /&gt;
  print &amp;quot; $item\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# srb_search_results-&amp;gt;get_num_rows&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Testing: srb_search_results-&amp;gt;get_num_rows\n&amp;quot;;&lt;br /&gt;
print &amp;quot; result: &amp;quot;.$qresult-&amp;gt;get_num_rows().&amp;quot; row\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# srb_search_results-&amp;gt;get_item tests&lt;br /&gt;
#&lt;br /&gt;
print &amp;quot;Testing: srb_search_results-&amp;gt;get_item\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Fetching individual item DATA_GRP_ID,\n result 0 will return first result in DATA_GRP_ID list\n&amp;quot;;&lt;br /&gt;
print &amp;quot; &amp;quot;.$qresult-&amp;gt;get_item($srbcore::DATA_GRP_ID,0).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Fetching individual item DATA_GRP_ID,\n result get_num_rows + 1 shoult be null since it&amp;#039;s out of range\n&amp;quot;;&lt;br /&gt;
print &amp;quot; &amp;quot;.$qresult-&amp;gt;get_item($srbcore::DATA_GRP_ID,$qresult-&amp;gt;get_num_rows()+1).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Fetching individual item DATA_GRP_NAME,\n result 0 should be null since we didn&amp;#039;t set sval for it.\n&amp;quot;;&lt;br /&gt;
print &amp;quot; &amp;quot;.$qresult-&amp;gt;get_item($srbcore::DATA_GRP_NAME,0).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# more_results&lt;br /&gt;
#  - see if srbSearch return everything, or if there is still more out there&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Test for more results than are contained in srb_search_results\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srb_search_results-&amp;gt;more_results\n&amp;quot;;&lt;br /&gt;
print &amp;quot; result: &amp;quot;. $qresult-&amp;gt;more_results().&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# get_next&lt;br /&gt;
#  - return additional XX results&lt;br /&gt;
print &amp;quot;Retrieving next 100 results, may return error if there are none\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Testing: srb_search_results-&amp;gt;get_next\n&amp;quot;;&lt;br /&gt;
my $moreresults = $qresult-&amp;gt;get_next(100);&lt;br /&gt;
print &amp;quot; result: $moreresults\n&amp;quot;;&lt;br /&gt;
if ($moreresults &amp;lt; 0) {&lt;br /&gt;
  print srbcore::srbError($moreresults,$srbcore::SRB_LONG_MSG|$srbcore::SRB_RCMD_ACTION);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#close connection&lt;br /&gt;
#&lt;br /&gt;
srbcore::clFinish($conn);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Toaster</name></author>
	</entry>
</feed>