Commit 41dc36d5 authored by Ekaterina's avatar Ekaterina

add: embulk test

parent ec8dd58e
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
[buildout]
parts =
embulk-service
embulk-config
webserver-server
publish-connection-parameter
eggs-directory = {{ buildout['eggs-directory'] }}
develop-eggs-directory = {{ buildout['develop-eggs-directory'] }}
offline = true
[directory]
recipe = slapos.cookbook:mkdirectory
etc = ${buildout:directory}/etc
bin = ${buildout:directory}/bin
var = ${buildout:directory}/var
log = ${:var}/log
scripts = ${:etc}/run
services = ${:etc}/service
promise = ${:etc}/promise/
home = ${:etc}/home
[instance-parameter]
recipe = slapos.cookbook:slapconfiguration.serialised
computer = ${slap_connection:computer_id}
partition = ${slap_connection:partition_id}
url = ${slap_connection:server_url}
key = ${slap_connection:key_file}
cert = ${slap_connection:cert_file}
configuration.name = Katya
[embulk-service]
recipe = slapos.cookbook:wrapper
wrapper-path = ${directory:services}/embulk-service
command-line = {{ java_location }}/bin/java -jar {{ embulk_location }}/embulk.jar
run ${embulk-config:rendered} -b {{ embulkPlugins_location }}/plugins
[embulk-config]
recipe = slapos.recipe.template:jinja2
context =
key slapparameter_dict instance-parameter:configuration
template = inline:{% raw -%}
{{ slapparameter_dict['conf_text'] }}
{%- endraw %}
rendered = ${directory:etc}/config.yml
mode = 0644
[webserver]
port = 7777
ipv6 = ${instance-parameter:ipv6-random}
url = http://[${:ipv6}]:${:port}
logfile = ${directory:log}/webserver-server.log
recipe = slapos.cookbook:wrapper
command-line =
{{ buildout['bin-directory'] }}/webserver-server --logfile ${:logfile}
--bind_ip ${:ipv6} --bind_port ${:port} --name ${instance-parameter:configuration.name}
wrapper-path = ${directory:services}/webserver-server
[webserver-server]
<= webserver
[webserver-server-promise]
<= webserver-promise
port = 7777
[publish-connection-parameter]
recipe = slapos.cookbook:publish
name = Hello ${instance-parameter:configuration.name}!
url = ${webserver-server:url}
[buildout]
extends =
../../../../stack/slapos.cfg
../../../../component/java/buildout.cfg
../../../../component/embulk/buildout.cfg
parts =
slapos-cookbook
instance-profile
java
embulk
embulkPlugins
webserver-server
[jinja-template]
recipe = slapos.recipe.template:jinja2
template = ${:_profile_base_location_}/${:filename}
mode = 0644
[instance-profile]
recipe = slapos.recipe.template:jinja2
md5sum = 8f4c0ecd7b59b850f998c925f6ca6aff
template = ${:_profile_base_location_}/instance.cfg.in
rendered = ${buildout:directory}/instance.cfg
mode = 0644
extensions = jinja2.ext.do
context =
section buildout buildout
key embulk_location embulk:location
key java_location java:location
key embulkPlugins_location embulkPlugins:location
[java]
<= java-re-8
[embulkPlugins]
recipe = slapos.recipe.build
install =
import os
bin_dir = os.path.join(location, 'bin')
os.makedirs(bin_dir)
os.chdir("parts/embulkPlugins")
call(["${java:location}/bin/java", "-jar", "${embulk:location}/embulk.jar",
"mkbundle", "plugins"])
os.chdir("plugins")
f = open('Gemfile', 'w')
f.write("source 'https://rubygems.org/'\n")
f.write("gem 'embulk'\n")
f.write("gem 'embulk-input-filename'\n")
f.write("gem 'embulk-output-wendelin'\n")
f.write("gem 'embulk-parser-none-bin'\n")
f.write("gem 'embulk-formatter-single_value'\n")
f.close()
call(["${java:location}/bin/java", "-jar", "${embulk:location}/embulk.jar", "bundle"])
[webserver-egg]
recipe = zc.recipe.egg:develop
egg = webserver
setup = ${:_profile_base_location_}/webserver/server/
[webserver-server]
recipe = zc.recipe.egg:scripts
eggs = ${webserver-egg:egg}
scripts = webserver=webserver-server
[versions]
slapos.recipe.template = 4.4
rubygemsrecipe = 0.2.2
java = 8
exec:
max_threads: 1
min_output_tasks: 1
in:
type: filename
path_prefix: /srv/slapgrid/slappart18/srv/runner/project/myslapos/slapos/software/erp5testnode/testsuite/embulkTest/data_in/
parser:
type: none-bin
out:
type: file
path_prefix: /srv/slapgrid/slappart18/srv/runner/project/myslapos/slapos/software/erp5testnode/testsuite/embulkTest/data_out/data_out
file_ext: wen
formatter:
type: single_value
exec:
max_threads: 1
min_output_tasks: 1
in:
type: filename
path_prefix: /srv/slapgrid/slappart97/srv/runner/project/woelfel-web-monitoring/dpu/beckhoff-lhm/manual_test/embulk-only/files/event_data/Project-Katya-Reference-2/
parser:
type: none-bin
out:
type: file
path_prefix: /path/to/output/data
file_ext: wen
\ No newline at end of file
##############################################################################
#
# Copyright (c) 2019 Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from setuptools import setup, find_packages
version = '0.0.1.dev0'
name = 'slapos.test.embulk'
with open("README.md") as f:
long_description = f.read()
setup(
name=name,
version=version,
description="Test for SlapOS' embulk",
long_description=long_description,
long_description_content_type='text/markdown',
maintainer="Nexedi",
maintainer_email="info@nexedi.com",
url="https://lab.nexedi.com/nexedi/slapos",
packages=find_packages(),
install_requires=[
'slapos.core',
'slapos.libnetworkcache',
'erp5.util',
'requests',
],
zip_safe=True,
test_suite='test',
)
import os
import subprocess
import unittest
import binascii
import struct
class TransferDataTest(unittest.TestCase):
def create_embulk_config(self, config, data_in_path, data_out_path):
config_string = "exec:\n max_threads: 1\n min_output_tasks: 1\n" + \
"in:\n type: filename\n path_prefix: %s\n parser:\n type: none-bin\n" + \
"out:\n type: file\n path_prefix: %s\n file_ext: wen\n formatter:\n type: single_value"
config_string = config_string % (data_in_path, data_out_path)
f = open(config,'w')
print >> f,config_string
f.close()
def test_transfer_data(self):
pwd = os.getcwd()
config = pwd[:len(pwd)-4] + "templates/config.yml"
data_in_path = pwd[:len(pwd)-4] + "data_in/"
data_out_path = pwd[:len(pwd)-4] + "data_out/data_out"
self.create_embulk_config(config, data_in_path, data_out_path)
subprocess.call(['/srv/slapgrid/slappart18/srv/runner/software/f5aec1c37c220000ab1c2ef799aac847/parts/java/bin/java',
'-jar', '/srv/slapgrid/slappart18/srv/runner/software/f5aec1c37c220000ab1c2ef799aac847/parts/embulk/embulk.jar',
'run', config, '-b', '/srv/slapgrid/slappart18/srv/runner/software/f5aec1c37c220000ab1c2ef799aac847/parts/embulkPlugins/plugins'])
data_in_file = data_in_path + "data-in.wen"
data_in_file = open(data_in_file, 'rb')
data_in = data_in_file.read()
data_in_file.close()
data_out_file = data_out_path + "000.00.wen"
data_out_file = open(data_out_file, 'rb')
data_out = data_out_file.read()
data_out_file.close()
#MAGIC_HEADER = b'\x92WEN\x00\x01'
#crc = struct.pack('<I', binascii.crc32(data_in) & 0xffffffff)
#data_in = b''.join([MAGIC_HEADER, crc, data_in])
data_in = struct.unpack('<I', data_in)
print("DATA: ", data_in)
self.assertEqual(data_in, data_out)
if __name__ == "__main__":
suite = unittest.TestLoader().loadTestsFromTestCase(TransferDataTest)
unittest.TextTestRunner(verbosity=3).run(suite)
#t = TransferDataTest()
#t.test_transfer_data()
##############################################################################
#
# Copyright (c) 2019 Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
import unittest
import requests
from StringIO import StringIO
import SimpleHTTPServer
import SocketServer
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import os
import time
import utils
import multiprocessing
test_msg = "dummyInputSimpleIngest"
#url = "http://$${caddy-configuration:local_ip}:8443"
url = "http://10.0.46.242:8443"
posted_data = None
all_data = []
request_tag = ""
from slapos.testing.testcase import makeModuleSetUpAndTestCaseClass
setUpModule, SlapOSInstanceTestCase = makeModuleSetUpAndTestCaseClass(
os.path.abspath(
os.path.join(os.path.dirname(__file__), '..', 'software.cfg')))
###################################################
class TestServerHandler(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write("<html><body><h1>hi!</h1></body></html>")
def do_HEAD(self):
self._set_headers()
def do_POST(self):
content_length = int(self.headers['Content-Length']) # <--- Gets the size of data
post_data = self.rfile.read(content_length) # <--- Gets the data itself
self._set_headers()
self.wfile.write(post_data)
global posted_data
posted_data = post_data
print("post data from do_POST")
print(posted_data)
global all_data
all_data.append(post_data.split(" ")[1])
global request_tag
request_tag = find_tag(self.requestline,"=", " ")
class TestIngestion(FluentdPluginTestCase):
@classmethod
def startServer(cls):
port=9443
server_address = ('0.0.0.0', port)
server = HTTPServer(server_address, TestServerHandler)
cls.server_process = multiprocessing.Process(target=server.serve_forever)
cls.server_process.start()
print("Server started...")
print("local ipv4 = ")
print(os.environ.get('LOCAL_IPV4'))
@classmethod
def stopServer(cls):
cls.server_process.terminate()
def setUp(self):
self.startServer()
# port=9443
# server_address = ('$${slap-network-information:local-ipv4}', port)
# httpd = HTTPServer(server_address, TestServerHandler)
# thread = threading.Thread(target=httpd.serve_forever)
# thread.start()
# print 'Starting http...'
# time.sleep(15)
print("for fake commit")
def tearDown(self):
self.stopServer()
time.sleep(10)
# httpd.shutdown()
# print("all posted data : ")
# print(all_data)
def test_1_get(self):
print("############## TEST 1 ##############")
resp = requests.get(url)
self.assertEqual(resp.status_code, 200)
print (resp.status_code)
def test_2_ingest(self):
print("############## TEST 2 ##############")
start_fluentd_cat(test_msg, "tag_test_2")
time.sleep(10)
print("posted data from test 2")
print(posted_data)
if posted_data:
self.assertEqual(test_msg, posted_data.split(" ")[1])
else:
self.assertEqual(test_msg, posted_data)
time.sleep(10)
self.assertEqual(test_msg, posted_data.split(" ")[1])
def start_fluentd_cat(test_msg, tag):
os.environ["GEM_PATH"] ="$${fluentd-service:path}/lib/ruby/gems/1.8/"
fluentd_cat_exec_comand = '$${fluentd-service:path}/bin/fluent-cat --none ' + tag
os.system("echo + " + test_msg + " | " + fluentd_cat_exec_comand)
def find_tag(s, start, end):
return (s.split(start))[1].split(end)[0]
'''
def main():
port=9443
server_address = ('$${slap-network-information:local-ipv4}', port)
httpd = HTTPServer(server_address, TestServerHandler)
thread = threading.Thread(target=httpd.serve_forever)
thread.start()
print 'Starting http...'
time.sleep(15)
stream = StringIO()
runner = unittest.TextTestRunner(verbosity=2, stream=stream)
result = runner.run(unittest.makeSuite(TestPost))
print 'Tests run ', result.testsRun
print 'Errors ', result.errors
print "Failures ", result.failures
stream.seek(0)
print 'Test output\n', stream.read()
time.sleep(30)
httpd.shutdown()
print(posted_data)
print("all posted data : ")
print(all_data)
return result.testsRun, result.errors, result.failures, stream.getvalue()
if __name__ == "__main__":
main()
'''
import os
import subprocess
import logging
from logging.handlers import RotatingFileHandler
from slapos.testing.testcase import makeModuleSetUpAndTestCaseClass
setUpModule, SlapOSInstanceTestCase = makeModuleSetUpAndTestCaseClass(
os.path.abspath(
os.path.join(os.path.dirname(__file__), '..', 'software.cfg')))
class TransferDataTest(SlapOSInstanceTestCase):
def create_embulk_config(self, config, data_in_path, data_out_path):
config_string = f''' exec:
max_threads: 1
min_output_tasks: 1
in:
type: filename
path_prefix: {}
parser:
type: none-bin
out:
type: file
path_prefix: {}
file_ext: wen'''.format(data_in_path, data_out_path)
f = open(config,'w')
print >> f,config_string
f.close()
return config
def test_transfer_data(self):
pwd = os.getcwd()
config = pwd[:len(pwd)-4] + "templates/config.yml"
data_in_path = pwd[:len(pwd)-4] + "data_in/"
data_out_path = pwd[:len(pwd)-4] + "data_out/data_out"
config_path = self.create_embulk_config(config, data_in_path, data_out_path)
subprocess.call(['{{ java_location }}/bin/java', '-jar', '{{ embulk_location }}/embulk.jar',
'run', 'config', '-b', '{{ embulkPlugins_location }}/plugins'])
data_in_file = data_in_path + "data-in.wen"
data_in_file = open(data_in_file, 'rb')
data_in = data_in_file.read()
data_in_file.close()
data_out_file = data_out_path + ".wen"
data_out_file = open(data_out_file, 'rb')
data_out = data_out_file.read()
data_out_file.close()
self.assertEqual(data_in, data_out)
\ No newline at end of file
from setuptools import setup
setup(
name = 'webserver',
entry_points = { 'console_scripts': ['webserver = webserver:main'] },
)
Metadata-Version: 1.0
Name: webserver
Version: 0.0.0
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN
setup.py
webserver.egg-info/PKG-INFO
webserver.egg-info/SOURCES.txt
webserver.egg-info/dependency_links.txt
webserver.egg-info/entry_points.txt
webserver.egg-info/top_level.txt
\ No newline at end of file
#!/usr/bin/env python
from __future__ import print_function
import sys
PY3 = sys.version_info.major >= 3
import time
import argparse
if PY3:
from http.server import BaseHTTPRequestHandler, HTTPServer
else:
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from socket import AF_INET6
class WebHello(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200) # ok
self.send_header("Content-type", "text/plain")
self.end_headers()
msg = "My first HELLLOOO %s at `%s` ; %s (python %s)" % (
' '.join(self.server.webhello_argv) or 'world',
self.path, time.asctime(), sys.version.replace('\n', ' '))
if PY3:
msg = msg.encode()
self.wfile.write(msg)
class HTTPServerV6(HTTPServer):
address_family = AF_INET6
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--logfile', dest='logfile')
parser.add_argument('--bind_ip', help='bind_ip', required=True)
parser.add_argument('--bind_port', help='port', type=int, required=True)
parser.add_argument('--name', help='name', required=True)
args = parser.parse_args()
bind_ip = args.bind_ip
bind_port = args.bind_port
name = args.name
# HTTPServer logs to sys.stderr - override it if we have --logfile
if args.logfile:
f = open(args.logfile, 'a', buffering=1)
sys.stderr = f
print('* %s helloweb.py starting at %s' % (
time.asctime(), (bind_ip, bind_port)), file=sys.stderr)
# TODO autodetect ipv6/ipv4
httpd = HTTPServerV6( (bind_ip, bind_port), WebHello)
httpd.webhello_argv = name
httpd.serve_forever()
if __name__ == '__main__':
main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment