How to run BrowserMob Proxy with RobotFramework and Capture HAR files - robotframework

I have written this code in robotframework
${proxy}= | Evaluate | sys.modules['selenium.webdriver'].Proxy() sys, selenium.webdriver |
${proxy.http_proxy}= | Set Variable | 127.0.0.1:8080 |
Create Webdriver | Firefox proxy=${proxy} |
Go To | http://www.knowledgefarm.in/tst/a.html |
And I am running BrowserMob proxy from command line like this:
browsermob-proxy.bat --address 127.0.0.1 --port 8080
Now, when i run robotframework, it open the browser and simple give this message on page.
HTTP ERROR: 404
Problem accessing /tst/a.html. Reason:
Not Found
Powered by Jetty://
Two questions:
why my pages are not loaded. (it works if I remove proxy setting)
After the workaround, how do I specify to generate HAR file and how should I specify the location of HAR file

The above code does not actually start a proxy. To start a proxy, you need to run these commands.
Create | http context | localhost:8080 | http
Post | /proxy
${json} | Get Response Body
${port} | Get Json Value | ${json} | /port
${proxy}= | Evaluate | sys.modules['selenium.webdriver'].Proxy() | sys,selenium.webdriver
${proxy.http_proxy}= | Set Variable | 127.0.0.1:${port}
Create Webdriver | Firefox | proxy=${proxy}
Go To | ${LOGIN URL}
Set Request Body | pageRef=LOGIN&captureContent=false&captureHeaders=true
PUT | /proxy/${port}/har
${json} | HttpLibrary.HTTP.Get Response Body
OperatingSystem.Create File | D:\\myfile.har | ${json}

Related

public endpoint for load-balancer service not found

I have an issue to list loadbalancers on open stack using cli
from#ge ~
$ openstack loadbalancer list
public endpoint for load-balancer service not found
from#ge ~
$ export | grep OS_
declare -x OS_AUTH_TYPE="password"
declare -x OS_AUTH_URL="http://192.168.20.33:5000/v3"
declare -x OS_IDENTITY_API_VERSION="3"
declare -x OS_PASSWORD="XXXXXX"
declare -x OS_PROJECT_NAME="project-name"
declare -x OS_TENANT_NAME="tenant-name"
declare -x OS_USERNAME="from"
declare -x OS_USER_DOMAIN_ID="default"
from#ge ~
$ echo "endpoint list" | openstack
You are not authorized to perform the requested action: identity:list_endpoints. (HTTP 403) (Request-ID: req-aec8b22e-d3ad-4116-b7bb-52545f641667)
I've tried to set OS_REGION_NAME to RegionOne, but I get the same result
Any tip ?
load-balancer service not found
It seems that the load balance service not work, have you deployment Octavia service successful?
identity:list_endpoints. (HTTP 403)
According to the official document, it's Forbidden about the authorization.
The identity was successfully authenticated but it is not authorized to perform the requested action.
Maybe there is a miss-configuration of the admin's roles in keystone, you should check it in database first.
Ok thanks for your answers.
I finally managed to play with load balancers using neutron cli:
$ neutron
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
(neutron) lbaas-loadbalancer-list
+--------------------------------------+------------------------+----------------+---------------------+----------+
| id | name | vip_address | provisioning_status | provider |
+--------------------------------------+------------------------+----------------+---------------------+----------+
| 00f3453d-8738-4eb6-b362-aefc8dfaeea6 | lb1 | 192.168.36.93 | ACTIVE | haproxy |
| 090e062d-d6cc-4ebe-bcbf-165d5c21051d | lb2 | 192.168.36.169 | ACTIVE | haproxy |
| 0c244567-8f49-4be0-9055-17fa903d4619 | lb3 | 192.168.36.43 | ACTIVE | haproxy |

How to modify MariaDB SQL Error Log plugin system variables?

I just installed this plugin to monitor SQL errors:
https://mariadb.com/kb/en/sql-error-log-plugin/
but I can't for the life of me find anything on how to modify the default system variables for that error log plugin, and where.
Anyone?!
You can't modify error plugin log variables via SQL statements. They are either read-only and/or they need to be specified at startup (see source code).
So you have to pass these values either to mariadbd/mysqld or you have to specify these in your configuration file.
Example in /etc/my.cnf:
[server]
sql-error-log-filename=foo.log
sql-error-log-rotate=ON
restart server and check the values
MariaDB [test]> show variables like 'sql_error%';
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| sql_error_log_filename | foo.log |
| sql_error_log_rate | 1 |
| sql_error_log_rotate | ON |
| sql_error_log_rotations | 9 |
| sql_error_log_size_limit | 1000000 |
+--------------------------+---------+

Openstack Keystone Install Issues

When trying to create Keystone:
openstack domain create --description "An Example Domain" example
I get this return error below:
Could not clean up: 'ClientManager' object has no attribute
'sdk_connection'
I am not sure what this is in reference to...
following the Doc here https://docs.openstack.org//keystone/wallaby/doc-keystone.pdf
This means that you aren't authenticated.
stack#ubuntu:~/devstack$ openstack domain create --description "An Example Domain" example
Missing value auth-url required for auth plugin password
Could not clean up: 'ClientManager' object has no attribute 'sdk_connection'
If you are using devstack you can just source userrc_early inside the devstack folder.
stack#ubuntu:~/devstack$ source userrc_early
stack#ubuntu:~/devstack$ openstack domain create --description "An Example Domain" example
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | An Example Domain |
| enabled | True |
| id | 1ddc2084930d492dbe39680cda5ef660 |
| name | example |
| options | {} |
| tags | [] |
+-------------+----------------------------------+

How to restart ceilometer service

I changed pulling intervals in /etc/ceilometer/pipeline.yaml file from 600 to 60 and can't make the service to use new values. I restarted everything that relates to ceilometer in openstack-status command, but that did not work. Can somebody tell me the proper way how to do it?
I am using Openstack Liberty on Ubuntu 14.04 LTS
root#OS1:~# openstack service list
+----------------------------------+------------+---------------+
| ID | Name | Type |
+----------------------------------+------------+---------------+
| 056fcccaad5c4991a8a0da199ed1d737 | cinderv2 | volumev2 |
| 483a0cd1ba79430690a8960ae3d40222 | glance | image |
| 5c704fc9253e4c15895589eb19fab2ac | keystone | identity |
| 92bfcfb417314e80a43e6e7d4d21f99b | nova | compute |
| a7a3809d73674d3da3fbe8030b47055a | horizon | dashboard |
| c21b5e3c9d68417cb11df60d72f9bb58 | heat | orchestration |
| c7030edb082346328a715b00098b974a | neutron | network |
| d331f5360e2b4d3a854e7f47107a9421 | ec2 | ec2 |
| f0a22f827bed43dbbc43822abfc3e3e0 | ceilometer | metering |
+----------------------------------+------------+---------------+
root#OS11:~# openstack-status
.
.
.
== Ceilometer services ==
ceilometer-api: active
ceilometer-agent-central: active
ceilometer-agent-compute: inactive (disabled on boot)
ceilometer-collector: active
ceilometer-alarm-notifier: active
ceilometer-alarm-evaluator: active
ceilometer-agent-notification:active
.
.
.
Well, you need to restart ceilometer-agent-notification service because this service is responsible for transforming the data into samples in the ceilometer database.
Thus, systemctl restart ceilometer-agent-notification.service will help along with restarting other services.
Since ceilometer-agent-compute service is disabled, you just need to restart ceilometer-agent-central service on the node you have modified the config file.
sudo service ceilometer-agent-central restart
You might want to auto reload pipelines after you modify it, for that, you can set refresh_pipeline_cfg=True and a proper time for pipeline_polling_interval such as 120 seconds in /etc/ceilometer/ceilometer.conf.
Note, be careful when you enable auto reload, and only save pipeline config file after you are sure about the content is right (otherwise it might lose 1 polling period data)

Robotframework threads

Is there any way you can start two actions in Robotframework. I'm trying to run a process that will run continuously and then make other actions without stopping the first process. The problem is that RF is waiting the first process to finish, then proceed with other actions. well, problem is the first process is not going to stop. Any advice?
Thanks,
Stell
Yes, you can do this with the Process library. It lets you run programs in the background.
In my open source project rfhub, the acceptance test suite has a suite setup that starts the hub in the background.
Here's the keyword that starts the hub:
*** Keywords ***
| Start rfhub
| | [Arguments] | ${PORT}
| | [Documentation]
| | ... | Starts rfhub on the port given in the variable ${PORT}
| | ... | As a side effect this creates a suite variable named ${rfhub process},
| | ... | which is used by the 'Stop rfhub' keyword.
| |
| | ${rfhub process}= | Start process | python | -m | rfhub | --port | ${PORT}
| | Set suite variable | ${rfhub process}
| | Wait until keyword succeeds | 20 seconds | 1 second
| | ... | Verify URL is reachable | /ping

Resources