コード例 #1
0
 def test_legacy_insert_via_curl(self):
     """batchuploader - robotupload legacy insert via CLI curl"""
     curl_input_file = os.path.join(CFG_TMPDIR, 'curl_test.xml')
     open(curl_input_file, "w").write(self.marcxml)
     try:
         ## curl -F '[email protected]' -F 'mode=-i' [-F 'callback_url=http://...'] [-F 'nonce=1234'] http://cds.cern.ch/batchuploader/robotupload -A invenio_webupload
         code, result, err = run_shell_command(
             "/usr/bin/curl -v -F file=@%s -F 'mode=-i' -F callback_url=%s -F nonce=1234 %s -A %s",
             [
                 curl_input_file, self.callback_url,
                 self.legacy_url,
                 make_user_agent_string('BatchUploader')
             ])
         self.failUnless(
             "[INFO]" in result,
             '[INFO] not find in results: %s, %s' % (result, err))
         current_task = get_last_taskid()
         run_shell_command("%s/bibupload %%s" % CFG_BINDIR,
                           [str(current_task)])
         results = json.loads(
             open(self.callback_result_path).read())
         self.failUnless('results' in results,
                         '"%s" did not contained [INFO]' % result)
         self.assertEqual(len(results['results']), 1)
         self.assertEqual(results['nonce'], "1234")
         self.failUnless(results['results'][0]['success'])
         self.failUnless(results['results'][0]['recid'] > 0)
         self.failUnless(
             """<subfield code="a">Doe, John</subfield>"""
             in results['results'][0]['marcxml'],
             results['results'][0]['marcxml'])
     finally:
         os.remove(curl_input_file)
コード例 #2
0
 def tearDown(self):
     GenericBibUploadTest.tearDown(self)
     if os.path.exists(self.callback_result_path):
         os.remove(self.callback_result_path)
     current_task = get_last_taskid()
     if current_task != self.last_taskid:
         delete_task(current_task)
コード例 #3
0
 def test_insert_via_curl(self):
     """batchuploader - robotupload insert via CLI curl"""
     curl_input_file = os.path.join(CFG_TMPDIR, 'curl_test.xml')
     open(curl_input_file, "w").write(self.marcxml)
     try:
         result = run_shell_command(
             '/usr/bin/curl -T %s %s -A %s -H "Content-Type: application/marcxml+xml"',
             [
                 curl_input_file, self.nonce_url,
                 make_user_agent_string('BatchUploader')
             ])[1]
         self.failUnless("[INFO]" in result)
         current_task = get_last_taskid()
         run_shell_command("%s/bibupload %%s" % CFG_BINDIR,
                           [str(current_task)])
         results = json.loads(
             open(self.callback_result_path).read())
         self.failUnless('results' in results,
                         '"%s" did not contained [INFO]' % result)
         self.assertEqual(len(results['results']), 1)
         self.assertEqual(results['nonce'], "1234")
         self.failUnless(results['results'][0]['success'])
         self.failUnless(results['results'][0]['recid'] > 0)
         self.failUnless(
             """<subfield code="a">Doe, John</subfield>"""
             in results['results'][0]['marcxml'],
             results['results'][0]['marcxml'])
     finally:
         os.remove(curl_input_file)
コード例 #4
0
 def tearDown(self):
     GenericBibUploadTest.tearDown(self)
     if os.path.exists(self.callback_result_path):
         os.remove(self.callback_result_path)
     current_task = get_last_taskid()
     if current_task != self.last_taskid:
         delete_task(current_task)
コード例 #5
0
 def test_legacy_insert_via_curl(self):
     """batchuploader - robotupload legacy insert via CLI curl"""
     curl_input_file = os.path.join(CFG_TMPDIR, "curl_test.xml")
     open(curl_input_file, "w").write(self.marcxml)
     try:
         ## curl -F '[email protected]' -F 'mode=-i' [-F 'callback_url=http://...'] [-F 'nonce=1234'] http://cds.cern.ch/batchuploader/robotupload -A invenio_webupload
         code, result, err = run_shell_command(
             "/usr/bin/curl -v -F file=@%s -F 'mode=-i' -F callback_url=%s -F nonce=1234 %s -A %s",
             [curl_input_file, self.callback_url, self.legacy_url, make_user_agent_string("BatchUploader")],
         )
         self.failUnless("[INFO]" in result, "[INFO] not find in results: %s, %s" % (result, err))
         current_task = get_last_taskid()
         run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
         results = json.loads(open(self.callback_result_path).read())
         self.failUnless("results" in results, '"%s" did not contained [INFO]' % result)
         self.assertEqual(len(results["results"]), 1)
         self.assertEqual(results["nonce"], "1234")
         self.failUnless(results["results"][0]["success"])
         self.failUnless(results["results"][0]["recid"] > 0)
         self.failUnless(
             """<subfield code="a">Doe, John</subfield>""" in results["results"][0]["marcxml"],
             results["results"][0]["marcxml"],
         )
     finally:
         os.remove(curl_input_file)
コード例 #6
0
 def test_simple_insert(self):
     """batchuploader - robotupload simple insert"""
     result = urllib2.urlopen(self.req).read()
     self.failUnless("[INFO]" in result)
     current_task = get_last_taskid()
     run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
     current_recid = run_sql("SELECT MAX(id) FROM bibrec")[0][0]
     self.failIfEqual(self.last_recid, current_recid)
     record = get_record(current_recid)
     self.assertEqual(record['245'][0][0], [('a', 'The title')])
コード例 #7
0
    def setUp(self):
        GenericBibUploadTest.setUp(self)
        self.callback_result_path = os.path.join(CFG_TMPDIR,
                                                 'robotupload.json')
        self.callback_url = CFG_SITE_URL + '/httptest/post2?%s' % urlencode(
            {"save": self.callback_result_path})
        self.oracle_callback_url = CFG_SITE_URL + '/httptest/oraclefriendly?%s' % urlencode(
            {"save": self.callback_result_path})
        if os.path.exists(self.callback_result_path):
            os.remove(self.callback_result_path)
        self.last_taskid = get_last_taskid()
        self.marcxml = """\
<record>
  <datafield tag="100" ind1=" " ind2=" ">
    <subfield code="a">Doe, John</subfield>
  </datafield>
  <datafield tag="245" ind1=" " ind2=" ">
    <subfield code="a">The title</subfield>
  </datafield>
  <datafield tag="980" ind1=" " ind2=" ">
    <subfield code="a">TEST</subfield>
  </datafield>
</record>"""
        self.req = urllib2.Request(CFG_SITE_URL +
                                   '/batchuploader/robotupload/insert')
        self.req.add_header('Content-Type', 'application/marcxml+xml')
        self.req.add_header('User-Agent',
                            make_user_agent_string('BatchUploader'))
        self.req.add_data(self.marcxml)
        self.req_callback = urllib2.Request(
            CFG_SITE_URL + '/batchuploader/robotupload/insert?' +
            urlencode({'callback_url': self.callback_url}))
        self.req_callback.add_header('Content-Type', 'application/marcxml+xml')
        self.req_callback.add_header('User-Agent', 'invenio_webupload')
        self.req_callback.add_data(self.marcxml)
        self.nonce_url = CFG_SITE_URL + '/batchuploader/robotupload/insert?' + urlencode(
            {
                'nonce': "1234",
                'callback_url': self.callback_url
            })
        self.req_nonce = urllib2.Request(self.nonce_url)
        self.req_nonce.add_header('Content-Type', 'application/marcxml+xml')
        self.req_nonce.add_header('User-Agent', 'invenio_webupload')
        self.req_nonce.add_data(self.marcxml)
        self.oracle_url = CFG_SITE_URL + '/batchuploader/robotupload/insert?' + urlencode(
            {
                'special_treatment': 'oracle',
                'callback_url': self.oracle_callback_url
            })
        self.req_oracle = urllib2.Request(self.oracle_url)
        self.req_oracle.add_header('Content-Type', 'application/marcxml+xml')
        self.req_oracle.add_header('User-Agent', 'invenio_webupload')
        self.req_oracle.add_data(self.marcxml)
        self.legacy_url = CFG_SITE_URL + '/batchuploader/robotupload'
コード例 #8
0
 def test_simple_insert(self):
     """batchuploader - robotupload simple insert"""
     result = urllib2.urlopen(self.req).read()
     self.failUnless("[INFO]" in result)
     current_task = get_last_taskid()
     run_shell_command("%s/bibupload %%s" % CFG_BINDIR,
                       [str(current_task)])
     current_recid = run_sql("SELECT MAX(id) FROM bibrec")[0][0]
     self.failIfEqual(self.last_recid, current_recid)
     record = get_record(current_recid)
     self.assertEqual(record['245'][0][0], [('a', 'The title')])
コード例 #9
0
 def test_insert_with_callback(self):
     """batchuploader - robotupload insert with callback"""
     result = urllib2.urlopen(self.req_callback).read()
     self.failUnless("[INFO]" in result, '"%s" did not contained [INFO]' % result)
     current_task = get_last_taskid()
     run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
     results = json.loads(open(self.callback_result_path).read())
     self.failUnless('results' in results)
     self.assertEqual(len(results['results']), 1)
     self.failUnless(results['results'][0]['success'])
     self.failUnless(results['results'][0]['recid'] > 0)
     self.failUnless("""<subfield code="a">Doe, John</subfield>""" in results['results'][0]['marcxml'], results['results'][0]['marcxml'])
コード例 #10
0
 def test_insert_with_callback(self):
     """batchuploader - robotupload insert with callback"""
     result = urllib2.urlopen(self.req_callback).read()
     self.failUnless("[INFO]" in result, '"%s" did not contained [INFO]' % result)
     current_task = get_last_taskid()
     run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
     results = json.loads(open(self.callback_result_path).read())
     self.failUnless('results' in results)
     self.assertEqual(len(results['results']), 1)
     self.failUnless(results['results'][0]['success'])
     self.failUnless(results['results'][0]['recid'] > 0)
     self.failUnless("""<subfield code="a">Doe, John</subfield>""" in results['results'][0]['marcxml'], results['results'][0]['marcxml'])
コード例 #11
0
    def setUp(self):
        GenericBibUploadTest.setUp(self)
        self.callback_result_path = os.path.join(CFG_TMPDIR, "robotupload.json")
        self.callback_url = CFG_SITE_URL + "/httptest/post2?%s" % urlencode({"save": self.callback_result_path})
        self.oracle_callback_url = CFG_SITE_URL + "/httptest/oraclefriendly?%s" % urlencode(
            {"save": self.callback_result_path}
        )
        if os.path.exists(self.callback_result_path):
            os.remove(self.callback_result_path)
        self.last_taskid = get_last_taskid()
        self.marcxml = """\
<record>
  <datafield tag="100" ind1=" " ind2=" ">
    <subfield code="a">Doe, John</subfield>
  </datafield>
  <datafield tag="245" ind1=" " ind2=" ">
    <subfield code="a">The title</subfield>
  </datafield>
  <datafield tag="980" ind1=" " ind2=" ">
    <subfield code="a">TEST</subfield>
  </datafield>
</record>"""
        self.req = urllib2.Request(CFG_SITE_URL + "/batchuploader/robotupload/insert")
        self.req.add_header("Content-Type", "application/marcxml+xml")
        self.req.add_header("User-Agent", make_user_agent_string("BatchUploader"))
        self.req.add_data(self.marcxml)
        self.req_callback = urllib2.Request(
            CFG_SITE_URL + "/batchuploader/robotupload/insert?" + urlencode({"callback_url": self.callback_url})
        )
        self.req_callback.add_header("Content-Type", "application/marcxml+xml")
        self.req_callback.add_header("User-Agent", "invenio_webupload")
        self.req_callback.add_data(self.marcxml)
        self.nonce_url = (
            CFG_SITE_URL
            + "/batchuploader/robotupload/insert?"
            + urlencode({"nonce": "1234", "callback_url": self.callback_url})
        )
        self.req_nonce = urllib2.Request(self.nonce_url)
        self.req_nonce.add_header("Content-Type", "application/marcxml+xml")
        self.req_nonce.add_header("User-Agent", "invenio_webupload")
        self.req_nonce.add_data(self.marcxml)
        self.oracle_url = (
            CFG_SITE_URL
            + "/batchuploader/robotupload/insert?"
            + urlencode({"special_treatment": "oracle", "callback_url": self.oracle_callback_url})
        )
        self.req_oracle = urllib2.Request(self.oracle_url)
        self.req_oracle.add_header("Content-Type", "application/marcxml+xml")
        self.req_oracle.add_header("User-Agent", "invenio_webupload")
        self.req_oracle.add_data(self.marcxml)
        self.legacy_url = CFG_SITE_URL + "/batchuploader/robotupload"
コード例 #12
0
 def test_insert_with_oracle(self):
     """batchuploader - robotupload insert with oracle special treatment"""
     import os
     if os.path.exists('/opt/invenio/var/log/invenio.err'):
         os.remove('/opt/invenio/var/log/invenio.err')
     result = urllib2.urlopen(self.req_oracle).read()
     self.failUnless("[INFO]" in result, '"%s" did not contained "[INFO]"' % result)
     current_task = get_last_taskid()
     run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
     results = json.loads(open(self.callback_result_path).read())
     self.failUnless('results' in results, '"%s" did not contained "results" key' % results)
     self.assertEqual(len(results['results']), 1)
     self.failUnless(results['results'][0]['success'])
     self.failUnless(results['results'][0]['recid'] > 0)
     self.failUnless("""<subfield code="a">Doe, John</subfield>""" in results['results'][0]['marcxml'], results['results'][0]['marcxml'])
コード例 #13
0
 def test_insert_with_oracle(self):
     """batchuploader - robotupload insert with oracle special treatment"""
     import os
     if os.path.exists('/opt/invenio/var/log/invenio.err'):
         os.remove('/opt/invenio/var/log/invenio.err')
     result = urllib2.urlopen(self.req_oracle).read()
     self.failUnless("[INFO]" in result, '"%s" did not contained "[INFO]"' % result)
     current_task = get_last_taskid()
     run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
     results = json.loads(open(self.callback_result_path).read())
     self.failUnless('results' in results, '"%s" did not contained "results" key' % results)
     self.assertEqual(len(results['results']), 1)
     self.failUnless(results['results'][0]['success'])
     self.failUnless(results['results'][0]['recid'] > 0)
     self.failUnless("""<subfield code="a">Doe, John</subfield>""" in results['results'][0]['marcxml'], results['results'][0]['marcxml'])
コード例 #14
0
 def test_insert_with_nonce(self):
     """batchuploader - robotupload insert with nonce"""
     result = urllib2.urlopen(self.req_nonce).read()
     self.failUnless("[INFO]" in result, '"%s" did not contained "[INFO]"' % result)
     current_task = get_last_taskid()
     run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
     results = json.loads(open(self.callback_result_path).read())
     self.failUnless("results" in results, '"%s" did not contained "results" key' % results)
     self.assertEqual(len(results["results"]), 1)
     self.assertEqual(results["nonce"], "1234")
     self.failUnless(results["results"][0]["success"])
     self.failUnless(results["results"][0]["recid"] > 0)
     self.failUnless(
         """<subfield code="a">Doe, John</subfield>""" in results["results"][0]["marcxml"],
         results["results"][0]["marcxml"],
     )
コード例 #15
0
 def test_insert_via_curl(self):
     """batchuploader - robotupload insert via CLI curl"""
     curl_input_file = os.path.join(CFG_TMPDIR, 'curl_test.xml')
     open(curl_input_file, "w").write(self.marcxml)
     try:
         result = run_shell_command('/usr/bin/curl -T %s %s -A %s -H "Content-Type: application/marcxml+xml"', [curl_input_file, self.nonce_url, make_user_agent_string('BatchUploader')])[1]
         self.failUnless("[INFO]" in result)
         current_task = get_last_taskid()
         run_shell_command("%s/bibupload %%s" % CFG_BINDIR, [str(current_task)])
         results = json.loads(open(self.callback_result_path).read())
         self.failUnless('results' in results, '"%s" did not contained [INFO]' % result)
         self.assertEqual(len(results['results']), 1)
         self.assertEqual(results['nonce'], "1234")
         self.failUnless(results['results'][0]['success'])
         self.failUnless(results['results'][0]['recid'] > 0)
         self.failUnless("""<subfield code="a">Doe, John</subfield>""" in results['results'][0]['marcxml'], results['results'][0]['marcxml'])
     finally:
         os.remove(curl_input_file)