From af8aad211786393c3505c7649cc18c88195b8f45 Mon Sep 17 00:00:00 2001 From: ehautot Date: Fri, 23 Feb 2018 12:36:37 +0100 Subject: Fix clamp integration APIs due to code change Change-Id: I6537143329a8bd16c7648a07d5a00fb76d0d8130 Signed-off-by: ehautot Issue-ID: CLAMP-100 --- .../tests/clamp/UIs/01__Create_Holmes_model.robot | 62 ++++++++++ .../tests/clamp/UIs/01__Create_TCA_template.robot | 81 ------------- .../tests/clamp/UIs/02__Create_TCA_model.robot | 26 +++-- .../clamp/UIs/03__Create_Holmes_template.robot | 66 ----------- .../tests/clamp/UIs/04__Create_Holmes_model.robot | 50 -------- .../clamp/UIs/data/TCA_template_properties.yml | 127 +++++++++++++-------- 6 files changed, 160 insertions(+), 252 deletions(-) create mode 100644 test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot delete mode 100644 test/csit/tests/clamp/UIs/01__Create_TCA_template.robot delete mode 100644 test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot delete mode 100644 test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot (limited to 'test/csit/tests/clamp/UIs') diff --git a/test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot b/test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot new file mode 100644 index 000000000..7a45dbb80 --- /dev/null +++ b/test/csit/tests/clamp/UIs/01__Create_Holmes_model.robot @@ -0,0 +1,62 @@ +*** Settings *** +Library Collections +Library RequestsLibrary +Library OperatingSystem +Library json +Library Selenium2Library +Library XvfbRobot + +*** Variables *** +${SELENIUM_SPEED_FAST} 0.2 seconds +${SELENIUM_SPEED_SLOW} 2 seconds + +*** Test Cases *** +Get Requests health check ok + CreateSession clamp http://localhost:8080 + ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck + Should Be Equal As Strings ${resp.status_code} 200 + +Open Browser +# Next line is to be enabled for Headless tests only (jenkins?). To see the tests disable the line. + Start Virtual Display 1920 1080 + Open Browser http://localhost:8080/designer/index.html browser=firefox + Set Selenium Speed ${SELENIUM_SPEED_SLOW} + Set Window Size 1920 1080 + ${title}= Get Title + Should Be Equal CLDS ${title} + +Good Login to Clamp UI and Verify logged in + Input Text locator=username text=admin + Input Text locator=password text=password + Press Key locator=password key=\\13 + Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60 + Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin + +Create Model from Menu + Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60 + Click Element xpath=//*[@id="navbar"]/ul/li[1]/a + Wait Until Element Is Visible locator=Create CL timeout=60 + Click Element locator=Create CL + Input Text locator=modelName text=HolmesModel1 + Select From List By Label id=templateName templateHolmes1 + Click Button locator=Create + +Save Model from Menu + Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60 + Click Element xpath=//*[@id="navbar"]/ul/li[1]/a + Wait Until Element Is Visible locator=Save CL timeout=60 + Set Selenium Speed ${SELENIUM_SPEED_FAST} + Click Element locator=Save CL + Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 + Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE + Set Selenium Speed ${SELENIUM_SPEED_SLOW} + +Close Browser + Close Browser + +Verify Holmes CL well created + ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99 + Create Session clamp http://localhost:8080 auth=${auth} + ${resp}= Get Request clamp /restservices/clds/v1/clds/model-names + Should Contain Match ${resp} *HolmesModel1* + Should Not Contain Match ${resp} *HolmesModel99* diff --git a/test/csit/tests/clamp/UIs/01__Create_TCA_template.robot b/test/csit/tests/clamp/UIs/01__Create_TCA_template.robot deleted file mode 100644 index 4bc0e6150..000000000 --- a/test/csit/tests/clamp/UIs/01__Create_TCA_template.robot +++ /dev/null @@ -1,81 +0,0 @@ -*** Settings *** -Library Collections -Library RequestsLibrary -Library OperatingSystem -Library json -Library Selenium2Library -Library XvfbRobot - - -*** Test Cases *** -Get Requests health check ok - CreateSession clamp http://localhost:8080 - ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck - Should Be Equal As Strings ${resp.status_code} 200 - -Open Browser -# Next line is to be enabled for Headless tests only (jenkins?). To see the tests desable the line. - Start Virtual Display 1920 1080 - Open Browser http://localhost:8080/designer/index.html browser=firefox - Set Selenium Speed .2 seconds - Set Window Size 1920 1080 - ${title}= Get Title - Should Be Equal CLDS ${title} - -Bad Login to Clamp UI and Verify not logged in - Input Text locator=username text=bad_login - Input Text locator=password text=This_is_bad_password - Press Key locator=password key=\\13 - Wait Until Element Is Visible locator=username timeout=5 - Page Should Not Contain Element xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=*Hello:admin* - -Good Login to Clamp UI and Verify logged in - Input Text locator=username text=admin - Input Text locator=password text=password - Press Key locator=password key=\\13 - Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60 - Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin - -Create Template from Menu - Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60 - Click Element xpath=//*[@id="navbar"]/ul/li[1]/a - Wait Until Element Is Visible locator=Create Template timeout=60 - Click Element locator=Create Template - Input Text locator=modelName text=TCATemplate - Click Button locator=OK - -Drag and Drop Boxes for template - Wait Until Element Is Visible xpath=//*[@class="entry icon-ves-collector-node"] timeout=60 - Drag And Drop By Offset xpath=//*[@class="entry icon-ves-collector-node"] 280 280 - Drag And Drop By Offset xpath=//*[@class="entry icon-tca-node"] 480 280 - Drag And Drop By Offset xpath=//*[@class="entry icon-policy-node"] 680 280 - Drag And Drop By Offset xpath=//*[@class="entry icon-end-event-none"] 880 280 - -Drag and Drop Connectors for template - Click Element xpath=//*[starts-with(@data-element-id, "StartEvent_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[5]/div/div/div[2]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[5]/div/div/div[2]/div xpath=//*[starts-with(@data-element-id, "VesCollector_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[1]/div/div/div[2]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[1]/div/div/div[2]/div xpath=//*[starts-with(@data-element-id, "TCA_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[2]/div/div/div[3]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[2]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "Policy_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[3]/div/div/div[3]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[3]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "EndEvent_")] - -Add Template properties yaml from Menu - Click Element xpath=//*[@id="navbar"]/ul/li[1]/a - Wait Until Element Is Visible locator=Template Properties timeout=60 - Click Element locator=Template Properties - ${data}= Get Binary File ${CURDIR}${/}data${/}TCA_template_properties.yml - Input Text locator=service text=${data} - Click Button locator=Close - -Save Template from Menu - Click Element xpath=//*[@id="navbar"]/ul/li[1]/a - Wait Until Element Is Visible locator=Save Template timeout=60 - Click Element locator=Save Template - Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE - -Close Browser - Close Browser \ No newline at end of file diff --git a/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot b/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot index 9f287cac7..e0240721c 100644 --- a/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot +++ b/test/csit/tests/clamp/UIs/02__Create_TCA_model.robot @@ -6,6 +6,9 @@ Library json Library Selenium2Library Library XvfbRobot +*** Variables *** +${SELENIUM_SPEED_FAST} 0.2 seconds +${SELENIUM_SPEED_SLOW} 2 seconds *** Test Cases *** Get Requests health check ok @@ -14,10 +17,10 @@ Get Requests health check ok Should Be Equal As Strings ${resp.status_code} 200 Open Browser -# Next line is to be enabled for Headless tests only (jenkins?). To see the tests desable the line. +# Next line is to be enabled for Headless tests only (jenkins?). To see the tests disable the line. Start Virtual Display 1920 1080 Open Browser http://localhost:8080/designer/index.html browser=firefox - Set Selenium Speed .2 seconds + Set Selenium Speed ${SELENIUM_SPEED_SLOW} Set Window Size 1920 1080 ${title}= Get Title Should Be Equal CLDS ${title} @@ -31,20 +34,29 @@ Good Login to Clamp UI and Verify logged in Create Model from Menu Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60 - Click Element xpath=//*[@id="navbar"]/ul/li[2]/a + Click Element xpath=//*[@id="navbar"]/ul/li[1]/a Wait Until Element Is Visible locator=Create CL timeout=60 Click Element locator=Create CL - Input Text locator=modelName text=TCAModel - Select From List By Label id=templateName TCATemplate + Input Text locator=modelName text=TCAModel1 + Select From List By Label id=templateName templateTCA1 Click Button locator=Create Save Model from Menu - Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60 - Click Element xpath=//*[@id="navbar"]/ul/li[2]/a + Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60 + Click Element xpath=//*[@id="navbar"]/ul/li[1]/a Wait Until Element Is Visible locator=Save CL timeout=60 + Set Selenium Speed ${SELENIUM_SPEED_FAST} Click Element locator=Save CL Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE + Set Selenium Speed ${SELENIUM_SPEED_SLOW} Close Browser Close Browser + +Verify TCA CL well create + ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99 + Create Session clamp http://localhost:8080 auth=${auth} + ${resp}= Get Request clamp /restservices/clds/v1/clds/model-names + Should Contain Match ${resp} *TCAModel1* + Should Not Contain Match ${resp} *TCAModel99* diff --git a/test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot b/test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot deleted file mode 100644 index 5530715cd..000000000 --- a/test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot +++ /dev/null @@ -1,66 +0,0 @@ -*** Settings *** -Library Collections -Library RequestsLibrary -Library OperatingSystem -Library json -Library Selenium2Library -Library XvfbRobot - - -*** Test Cases *** -Get Requests health check ok - CreateSession clamp http://localhost:8080 - ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck - Should Be Equal As Strings ${resp.status_code} 200 - -Open Browser -# Next line is to be enabled for Headless tests only (jenkins?). To see the tests desable the line. - Start Virtual Display 1920 1080 - Open Browser http://localhost:8080/designer/index.html browser=firefox - Set Selenium Speed .2 seconds - Set Window Size 1920 1080 - ${title}= Get Title - Should Be Equal CLDS ${title} - -Good Login to Clamp UI and Verify logged in - Input Text locator=username text=admin - Input Text locator=password text=password - Press Key locator=password key=\\13 - Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60 - Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin - -Create Template from Menu - Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60 - Click Element xpath=//*[@id="navbar"]/ul/li[1]/a - Wait Until Element Is Visible locator=Create Template timeout=60 - Click Element locator=Create Template - Input Text locator=modelName text=HolmesTemplate - Click Button locator=OK - -Drag and Drop Boxes for template - Wait Until Element Is Visible xpath=//*[@class="entry icon-ves-collector-node"] timeout=60 - Drag And Drop By Offset xpath=//*[@class="entry icon-ves-collector-node"] 280 280 - Drag And Drop By Offset xpath=//*[@class="entry icon-holmes-node"] 480 280 - Drag And Drop By Offset xpath=//*[@class="entry icon-policy-node"] 680 280 - Drag And Drop By Offset xpath=//*[@class="entry icon-end-event-none"] 880 280 - -Drag and Drop Connectors for template - Click Element xpath=//*[starts-with(@data-element-id, "StartEvent_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[5]/div/div/div[2]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[5]/div/div/div[2]/div xpath=//*[starts-with(@data-element-id, "VesCollector_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[1]/div/div/div[2]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[1]/div/div/div[2]/div xpath=//*[starts-with(@data-element-id, "Holmes_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[2]/div/div/div[3]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[2]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "Policy_")] - Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[3]/div/div/div[3]/div - Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[3]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "EndEvent_")] - -Save Template from Menu - Click Element xpath=//*[@id="navbar"]/ul/li[1]/a - Wait Until Element Is Visible locator=Save Template timeout=60 - Click Element locator=Save Template - Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE - -Close Browser - Close Browser \ No newline at end of file diff --git a/test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot b/test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot deleted file mode 100644 index a531645a1..000000000 --- a/test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot +++ /dev/null @@ -1,50 +0,0 @@ -*** Settings *** -Library Collections -Library RequestsLibrary -Library OperatingSystem -Library json -Library Selenium2Library -Library XvfbRobot - - -*** Test Cases *** -Get Requests health check ok - CreateSession clamp http://localhost:8080 - ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck - Should Be Equal As Strings ${resp.status_code} 200 - -Open Browser -# Next line is to be enabled for Headless tests only (jenkins?). To see the tests desable the line. - Start Virtual Display 1920 1080 - Open Browser http://localhost:8080/designer/index.html browser=firefox - Set Selenium Speed .2 seconds - Set Window Size 1920 1080 - ${title}= Get Title - Should Be Equal CLDS ${title} - -Good Login to Clamp UI and Verify logged in - Input Text locator=username text=admin - Input Text locator=password text=password - Press Key locator=password key=\\13 - Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60 - Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin - -Create Model from Menu - Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60 - Click Element xpath=//*[@id="navbar"]/ul/li[2]/a - Wait Until Element Is Visible locator=Create CL timeout=60 - Click Element locator=Create CL - Input Text locator=modelName text=HolmesModel - Select From List By Label id=templateName HolmesTemplate - Click Button locator=Create - -Save Model from Menu - Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60 - Click Element xpath=//*[@id="navbar"]/ul/li[2]/a - Wait Until Element Is Visible locator=Save CL timeout=60 - Click Element locator=Save CL - Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60 - Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE - -Close Browser - Close Browser diff --git a/test/csit/tests/clamp/UIs/data/TCA_template_properties.yml b/test/csit/tests/clamp/UIs/data/TCA_template_properties.yml index 3e09fdad5..101dc2c0d 100644 --- a/test/csit/tests/clamp/UIs/data/TCA_template_properties.yml +++ b/test/csit/tests/clamp/UIs/data/TCA_template_properties.yml @@ -1,51 +1,82 @@ -tosca_definitions_version: cloudify_dsl_1_2 - +tosca_definitions_version: cloudify_dsl_1_3 imports: -- http://www.getcloudify.org/spec/cloudify/3.3.1/types.yaml -- http://127.0.0.1/1607_prod/type_files/cdap_app.yaml - +- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml +- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml +inputs: + location_id: + type: string + service_id: + type: string node_templates: - MTCA: - type: dcae.nodes.cdap_app + cdap_host_host: + type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure properties: - service_name: "cdap-mtca-central" - deployment_JSON: |- - { - "clusterService": {"$ref": "/services/vm-cdap-cluster-central/instances/rdm2c"}, - "namespace": "MTCA", - "appNames": [ "cdap-mtca" ], - "flowNames": [ "cdap-mtca.TCAVESCollectorFlow" ], - "workerNames": ["cdap-mtca.TCADMaaPMRSubscriberWorker", "cdap-mtca.TCADMaaPMRPublisherWorker"], - "serviceNames" : [], - "apps": { - "cdap-mtca": { - "jarFile": "/opt/app/cdap-apps/dcae-analytics-mtca-1.0.0.jar", - "artifactName": "dcae-analytics-mtca", - "version": "1.0.0", - "appConfigFileContent": "{config:{ \"appName\":\"cdap-mtca\", \"appDescription\":\"DCAE Analytics Threshold Crossing Alert Application\", \"tcaSubscriberOutputStreamName\":\"TCASubscriberOutputStream\", \"thresholdCalculatorFlowletInstances\":2, \"tcaVESMessageStatusTableName\":\"TCAVESMessageStatusTable\", \"tcaVESMessageStatusTableTTLSeconds\":864000, \"tcaVESAlertsTableName\":\"TCAVESAlertsTable\", \"tcaVESAlertsTableTTLSeconds\":1728000 }}" - } - }, - - "configuration": { - "$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration", - "subscriberContentType": "", - "subscriberConsumerId": "c12", - "subscriberConsumerGroup": "OpenDCAE-c12", - "subscriberTimeoutMS": "-1", - "subscriberMessageLimit": "-1", - "subscriberPollingInterval": "20000", - "publisherContentType": "application/json", - "publisherMaxBatchSize": "10", - "publisherMaxRecoveryQueueSize": "100000", - "publisherPollingInterval": "20000", - "publisherAlertWindowingTime": "86400", - "policyName": "policy.dcae.configuration", - "policyScope": "pnf=eNodeB;type=configuration", - "policyVersion": "1.0.0", - "domain" : "measurementsForVfScaling", - - "signatures" : { - } - - } - } + location_id: + get_input: location_id + scn_override: cdap_broker.solutioning-central.dcae.onap.org + interfaces: + cloudify.interfaces.lifecycle: { + } + tca_tca: + type: dcae.nodes.MicroService.cdap + properties: + app_config: + appDescription: DCAE Analytics Threshold Crossing Alert Application + appName: dcae-tca + tcaSubscriberOutputStreamName: TCASubscriberOutputStream + tcaVESAlertsTableName: TCAVESAlertsTable + tcaVESAlertsTableTTLSeconds: '1728000' + tcaVESMessageStatusTableName: TCAVESMessageStatusTable + tcaVESMessageStatusTableTTLSeconds: '86400' + thresholdCalculatorFlowletInstances: '2' + app_preferences: + publisherContentType: application/json + publisherHostName: mrlocal-mtnjftle01.onap.org + publisherHostPort: '3905' + publisherMaxBatchSize: '10' + publisherMaxRecoveryQueueSize: '100000' + publisherPollingInterval: '20000' + publisherProtocol: https + publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub + publisherUserName: m00502@tca.af.dcae.onap.org + publisherUserPassword: Te5021abc + subscriberConsumerGroup: OpenDCAE-c12 + subscriberConsumerId: c12 + subscriberContentType: application/json + subscriberHostName: mrlocal-mtnjftle01.onap.org + subscriberHostPort: '3905' + subscriberMessageLimit: '-1' + subscriberPollingInterval: '20000' + subscriberProtocol: https + subscriberTimeoutMS: '-1' + subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub + subscriberUserName: m00502@tca.af.dcae.onap.org + subscriberUserPassword: Te5021abc + tca_policy: null + artifact_name: dcae-analytics-tca + artifact_version: 1.0.0 + connections: + streams_publishes: [ + ] + streams_subscribes: [ + ] + jar_url: http://somejar + location_id: + get_input: location_id + namespace: cdap_tca_hi_lo + programs: + - program_id: TCAVESCollectorFlow + program_type: flows + - program_id: TCADMaaPMRSubscriberWorker + program_type: workers + - program_id: TCADMaaPMRPublisherWorker + program_type: workers + service_component_type: cdap_app_tca + service_id: + get_input: service_id + streamname: TCASubscriberOutputStream + relationships: + - target: cdap_host_host + type: dcae.relationships.component_contained_in \ No newline at end of file -- cgit 1.2.3-korg