Пример #1
0
 def test_r(self):
     service = Service([
     ])
     input_data = [{'Name': 'Robert'}]
     _, rows = r(service, input_data, 'output = input')
     self.assertEqual(len(rows), 1)
     self.assertEqual(rows[0]['Name'], 'Robert')
Пример #2
0
    def test_r_package_usage(self):
        import r_index_logging
        r_index_logging.clear_log_entries()

        service = Service([
            Stanza('package://race', {}),
            Stanza('package://boot', {})
        ])
        _, rows = r(service, None, '''
        library(race)
        library(boot)
        library(race)
        output = data.frame(h1=c('v1'))
        ''')
        indexed_events = r_index_logging.get_log_entries()

        def is_indexed(text):
            for e in indexed_events:
                if text in e:
                    return True
            return False
        self.assertTrue(is_indexed('action=\"package_usage\"'))
        self.assertTrue(is_indexed('package_name=\"race\"'))
        self.assertTrue(is_indexed('action=\"package_usage\"'))
        self.assertTrue(is_indexed('package_name=\"boot\"'))
Пример #3
0
    def test_r_package_usage_from_custom_script(self):
        import r_index_logging
        r_index_logging.clear_log_entries()

        service = Service([
            Stanza('package://race', {}),
            Stanza('package://boot', {})
        ])
        scriptlib.add(service, 'test', """
        library(race)
        add <- function(a,b) {
          c = a+b
          return(c)
        }
        result = add(4,10)
        output = data.frame(Result=c(result))
        """)
        _, rows = r(service, None, 'test.r')
        indexed_events = r_index_logging.get_log_entries()

        def is_indexed(text):
            for e in indexed_events:
                if text in e:
                    return True
            return False
        self.assertTrue(is_indexed('action=\"package_usage\"'))
        self.assertTrue(is_indexed('package_name=\"race\"'))
Пример #4
0
    def test_update_library(self):
        service = Service([
            Stanza(
                'script://test', {
                    'content':
                    'YWRkIDwtIGZ1bmN0aW9uKGEsYikgew0KICBjID0gYStiDQogIHJldHVybihjKQ0KfQ0KcmVzdWx0ID0gY'
                    'WRkKDQsMjAwKQ0Kb3V0cHV0ID0gZGF0YS5mcmFtZShSZXN1bHQ9YyhyZXN1bHQpKQ==',
                }),
        ])
        scripts.create_files(service)
        installed_scripts = os.listdir(scripts.get_custom_scripts_path())
        self.assertEqual(len(installed_scripts), 1)
        self.assertEqual(installed_scripts[0], 'test.r')

        mtime = os.path.getmtime(
            os.path.join(scripts.get_custom_scripts_path(),
                         installed_scripts[0]))
        scripts.create_files(service)
        self.assertEqual(
            mtime,
            os.path.getmtime(
                os.path.join(scripts.get_custom_scripts_path(),
                             installed_scripts[0])))

        time.sleep(1.5)
        scripts.add(
            service, 'test', """
add <- function(a,b) {
  c = a+b
  return(c)
}
result = add(4,10)
output = data.frame(Result=c(result))
        """)
        time.sleep(1.5)
        scripts.create_files(service)
        installed_scripts = os.listdir(scripts.get_custom_scripts_path())
        self.assertEqual(len(installed_scripts), 1)
        self.assertEqual(installed_scripts[0], 'test.r')

        self.assertNotEqual(
            mtime,
            os.path.getmtime(
                os.path.join(scripts.get_custom_scripts_path(),
                             installed_scripts[0])))
        mtime = os.path.getmtime(
            os.path.join(scripts.get_custom_scripts_path(),
                         installed_scripts[0]))
        scripts.create_files(service)
        self.assertEqual(
            mtime,
            os.path.getmtime(
                os.path.join(scripts.get_custom_scripts_path(),
                             installed_scripts[0])))
Пример #5
0
 def test_r_package_installation(self):
     service = Service([
         Stanza('package://race', {})
     ])
     input_data = [{'Name': 'Robert'}]
     _, rows = r(service, input_data, '''
     library(race)
     output = input
     ''')
     self.assertEqual(len(rows), 1)
     self.assertEqual(rows[0]['Name'], 'Robert')
Пример #6
0
 def test_iter_stanzas(self):
     service = Service([
         Stanza('script://test1', {}),
         Stanza('package://test2', {}),
         Stanza('script://test3', {}),
     ])
     cnt = 0
     for stanza, name in config.iter_stanzas(service, 'script'):
         self.assertTrue(name.startswith('test'))
         self.assertTrue(stanza.name.startswith('script://'))
         cnt += 1
     self.assertEqual(2, cnt)
Пример #7
0
 def test_create_stanza(self):
     service = Service([
         Stanza('script://test1', {}),
         Stanza('package://test2', {}),
         Stanza('script://test3', {}),
     ])
     r_config.create_stanza(service, 'test', 'test4', {'a': 'b'})
     cnt = 0
     for stanza, name in r_config.iter_stanzas(service, 'test'):
         self.assertEqual(cnt, 0)
         cnt += 1
         self.assertEqual(getattr(stanza, 'a'), 'b')
Пример #8
0
    def test_get_r_config_file(self):
        r_index_logging.clear_log_entries()

        service = Service()
        r_packages.add(service, 'boot')
        r_stats.r_stats(service)
        indexed_events = r_index_logging.get_log_entries()

        self.assertEqual(len(indexed_events), 2)

        self.assertTrue('stats_package_name=\"boot\"' in indexed_events[0])

        self.assertTrue('stats_number_of_packages=\"1\"' in indexed_events[1])
Пример #9
0
 def test_delete_stanza(self):
     service = Service([
         Stanza('script://test1', {}),
         Stanza('package://test2', {}),
         Stanza('script://test3', {}),
     ])
     config.delete_stanza(service, 'script', 'test3')
     config.delete_stanza(service, 'script', 'test1')
     for _ in config.iter_stanzas(service, 'script'):
         self.fail('No stanza should be found')
     cnt = 0
     for stanza, name in config.iter_stanzas(service, 'package'):
         self.assertEqual('package://test2', stanza.name)
         cnt += 1
     self.assertEqual(1, cnt)
Пример #10
0
 def test_update_library(self):
     service = Service([
         Stanza('package://boot', {}),
     ])
     r_packages.update_library(service)
     installed_packages = os.listdir(r_packages.get_library_path())
     self.assertEqual(len(installed_packages), 1)
     self.assertEqual(installed_packages[0], 'boot')
     self.assertEqual(r_packages.get_package_state('boot'),
                      r_packages.metadata_package_installed)
     r_packages.update_library(service)
     installed_packages = os.listdir(r_packages.get_library_path())
     self.assertEqual(len(installed_packages), 1)
     self.assertEqual(installed_packages[0], 'boot')
     self.assertEqual(r_packages.get_package_state('boot'),
                      r_packages.metadata_package_installed)
     r_packages.add(service, 'forecast')
     self.assertEqual(r_packages.get_package_state('forecast'),
                      r_packages.metadata_package_not_installed)
     r_packages.update_library(service)
     installed_packages = os.listdir(r_packages.get_library_path())
     self.assertTrue('boot' in installed_packages)
     self.assertTrue('forecast' in installed_packages)
     self.assertEqual(r_packages.get_package_state('boot'),
                      r_packages.metadata_package_installed)
     self.assertEqual(r_packages.get_package_state('forecast'),
                      r_packages.metadata_package_installed)
     r_packages.remove(service, 'boot')
     self.assertEqual(r_packages.get_package_state('boot'),
                      r_packages.metadata_package_installed)
     r_packages.update_library(service)
     installed_packages = os.listdir(r_packages.get_library_path())
     self.assertFalse('boot' in installed_packages)
     self.assertTrue('timeDate' in installed_packages)
     self.assertTrue('forecast' in installed_packages)
     self.assertEqual(r_packages.get_package_state('boot'),
                      r_packages.metadata_package_not_installed)
     self.assertEqual(r_packages.get_package_state('timeDate'),
                      r_packages.metadata_package_installed)
     self.assertEqual(r_packages.get_package_state('forecast'),
                      r_packages.metadata_package_installed)
Пример #11
0
    def test_r_package_usage(self):
        import index_logging
        index_logging.clear_log_entries()

        service = Service([
            Stanza('package://race', {}),
            Stanza('package://boot', {}),
        ])
        _, rows = r(
            service, None, '''
        library(race)
        library(boot)
        library(race)
        output = data.frame(h1=c('v1'))
        ''')
        indexed_events = index_logging.get_log_entries()
        self.assertEqual(len(indexed_events), 4)
        self.assertTrue('action=\"package_usage\"' in indexed_events[1])
        self.assertTrue('package_name=\"race\"' in indexed_events[1])
        self.assertTrue('action=\"package_usage\"' in indexed_events[2])
        self.assertTrue('package_name=\"boot\"' in indexed_events[2])
Пример #12
0
    def test_r_package_usage_from_custom_script(self):
        import index_logging
        index_logging.clear_log_entries()

        service = Service([
            Stanza('package://race', {}),
            Stanza('package://boot', {}),
        ])
        scriptlib.add(
            service, 'test', """
        library(race)
        add <- function(a,b) {
          c = a+b
          return(c)
        }
        result = add(4,10)
        output = data.frame(Result=c(result))
        """)
        _, rows = r(service, None, 'test.r')
        indexed_events = index_logging.get_log_entries()
        self.assertEqual(len(indexed_events), 3)
        self.assertTrue('action=\"package_usage\"' in indexed_events[1])
        self.assertTrue('package_name=\"race\"' in indexed_events[1])
Пример #13
0
 def test_execute(self):
     service = Service([
         Stanza('script://test1', {}),
         Stanza('package://test2', {}),
         Stanza('script://test3', {}),
     ])
     with tempfile.NamedTemporaryFile(delete=False) as f:
         output_csv_filename = f.name
     try:
         script = 'output = data.frame(a=c(1,2,3))\n'
         script += 'write.csv(output, file = "' + output_csv_filename.replace(
             '\\', '\\\\') + '")\n'
         r_framework.exeute(
             service,
             script,
             r_packages.get_library_path(),
             r_scripts.get_custom_scripts_path(),
         )
         with open(output_csv_filename, 'r') as f:
             reader = csv.reader(f)
             rows = [row for row in reader]
     finally:
         os.remove(output_csv_filename)
     self.assertEqual(len(rows), 4)
Пример #14
0
 def test_get_r_path(self):
     service = Service()
     r_path = config.get_r_path(service)
     self.assertTrue(os.path.exists(r_path), 'invalid R path: %s' % r_path)
Пример #15
0
 def test_get_r_config_file(self):
     service = Service()
     r_config_file = config.get_r_config_file(service)
     self.assertIsNotNone(r_config_file)