SlideShare une entreprise Scribd logo
“Test by Proxy”
     Mike Lee
3 Problems
Rendering of “my customers content”
is not controlled by me, so how do I
test effectively ?

How do I know our servers are coping?

If all ISN’T OK.. how do we quickly
find out WTF HAPPENED ?
A Suggestion


Generate clientside logging to be
used by test, monitoring & analysis
scripts
A few Impediments


JS security problem

Multi-browser support

Time (“we want it now”)
The Proposal


ICAP proxy to intecept & enhance HTML

Log to file through FF or Chrome

R4 == RailsReads&RendersResults
ICAP ?
ICAP, the Internet Content Adaption Protocol,
   is a protocol aimed at providing
  ”simple object-based content vectoring for HTTP services”.

ICAP is, in essence, a lightweight protocol for executing a quot;remote
   procedure callquot; on HTTP messages. It allows ICAP clients to pass
   HTTP messages to ICAP servers for some sort of transformation or
   other processing (quot;adaptationquot;). The server executes its
   transformation service on messages and sends back responses to the
   client, usually with modified messages. Typically, the adapted
   messages are either HTTP requests or HTTP responses.




            http://www.icap-forum.org/
       documents/specification/rfc3507.txt
Setup...
You will need...


Operating Sys: Linux
ICAP Client: http://www.squid-cache.org/Download/
ICAP Server: http://sourceforge.net/projects/greasyspoon/
Runtime: Java (SE Runtime Env.)
Scripting: JRuby
Browser: Firefox
Greasyspoon
require 'hpricot'

def process(httpresponse)
 document = Hpricot(httpresponse)

  pfhead1 = '<script language=quot;JavaScriptquot;>
function peepingfrog() {alert(quot;Peeping !quot;);} </script>'
  (document/quot;/html/headquot;).append pfhead1

   pfhead2 = '<script language=quot;JavaScriptquot;>
function peep() {allloaded = 0; while(allloaded < 1)
{ var imagesloaded = 1; var images = document.images;for (var i = 0;i<images.length;i++)
 { if(images[i].complete == false) { imagesloaded = 0; } } allloaded = imagesloaded; };
window.location = quot;file://pf.txtquot;; } </script>'
   (document/quot;/html/headquot;).append pfhead2

  (document/quot;/html/bodyquot;).set(:onload => 'quot;peep()quot;')
  pfbody = '<div><img src=quot;/home/mike/pf.jpgquot; alt=quot;Peep!quot;></div>'
  (document/quot;/html/bodyquot;).append pfbody
   return quot;#{document}quot;
end

$httpresponse = process($httpresponse)
End of part 1


Comments ?

Questions ?

Suggestions ?



mike.lee@europe.com

Contenu connexe

Tendances

Микросервисы со Spring Boot & Spring Cloud
Микросервисы со Spring Boot & Spring CloudМикросервисы со Spring Boot & Spring Cloud
Микросервисы со Spring Boot & Spring Cloud
Vitebsk DSC
 

Tendances (20)

Continuous performance management with Gatling
Continuous performance management with GatlingContinuous performance management with Gatling
Continuous performance management with Gatling
 
HTTP/2 Prioritization
HTTP/2 PrioritizationHTTP/2 Prioritization
HTTP/2 Prioritization
 
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
 
Http2 in practice
Http2 in practiceHttp2 in practice
Http2 in practice
 
Building Asynchronous Microservices with Armeria
Building Asynchronous Microservices with ArmeriaBuilding Asynchronous Microservices with Armeria
Building Asynchronous Microservices with Armeria
 
Ярослав Пернеровський “Побудова системи автоматизації функціональних тестів ч...
Ярослав Пернеровський “Побудова системи автоматизації функціональних тестів ч...Ярослав Пернеровський “Побудова системи автоматизації функціональних тестів ч...
Ярослав Пернеровський “Побудова системи автоматизації функціональних тестів ч...
 
Brushing skills on SignalR for ASP.NET developers
Brushing skills on SignalR for ASP.NET developersBrushing skills on SignalR for ASP.NET developers
Brushing skills on SignalR for ASP.NET developers
 
Resource Prioritization
Resource PrioritizationResource Prioritization
Resource Prioritization
 
Connected Cooking powered by MQTT
Connected Cooking powered by MQTTConnected Cooking powered by MQTT
Connected Cooking powered by MQTT
 
How to Write Great Kafka Connectors
How to Write Great Kafka ConnectorsHow to Write Great Kafka Connectors
How to Write Great Kafka Connectors
 
Микросервисы со Spring Boot & Spring Cloud
Микросервисы со Spring Boot & Spring CloudМикросервисы со Spring Boot & Spring Cloud
Микросервисы со Spring Boot & Spring Cloud
 
Big ip f5 ltm load balancing methods
Big ip f5 ltm load balancing methodsBig ip f5 ltm load balancing methods
Big ip f5 ltm load balancing methods
 
Learn Advanced JAVA at ASIT
Learn Advanced JAVA at ASITLearn Advanced JAVA at ASIT
Learn Advanced JAVA at ASIT
 
Performance with Selenium2
Performance with Selenium2Performance with Selenium2
Performance with Selenium2
 
Resource loading, prioritization, HTTP/2 - oh my!
Resource loading, prioritization, HTTP/2 - oh my!Resource loading, prioritization, HTTP/2 - oh my!
Resource loading, prioritization, HTTP/2 - oh my!
 
Rubyslava Phoenix Liveview
Rubyslava Phoenix LiveviewRubyslava Phoenix Liveview
Rubyslava Phoenix Liveview
 
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
 
Evolution of netflix conductor
Evolution of netflix conductorEvolution of netflix conductor
Evolution of netflix conductor
 
Альона Тудан “Microservices: better for Devs or QA’s?”
Альона Тудан “Microservices: better for Devs or QA’s?” Альона Тудан “Microservices: better for Devs or QA’s?”
Альона Тудан “Microservices: better for Devs or QA’s?”
 
What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5
 

En vedette

Uso responsable de las tic
Uso responsable de las ticUso responsable de las tic
Uso responsable de las tic
mayerjimenez
 
Maintenance management
Maintenance managementMaintenance management
Maintenance management
Rajeev Sharan
 
Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)
ainizbahari97
 

En vedette (12)

La web, navegacion y caracteristicas
La web, navegacion y caracteristicasLa web, navegacion y caracteristicas
La web, navegacion y caracteristicas
 
TRABAJO FINAL
TRABAJO FINAL TRABAJO FINAL
TRABAJO FINAL
 
Web 2.0-
Web 2.0-Web 2.0-
Web 2.0-
 
El buen uso de la tecnología
El buen uso de la tecnologíaEl buen uso de la tecnología
El buen uso de la tecnología
 
Uso responsable de las tic
Uso responsable de las ticUso responsable de las tic
Uso responsable de las tic
 
Squid
SquidSquid
Squid
 
Squid Proxy Server
Squid Proxy ServerSquid Proxy Server
Squid Proxy Server
 
Virus and antivirus final ppt
Virus and antivirus final pptVirus and antivirus final ppt
Virus and antivirus final ppt
 
Maintenance management
Maintenance managementMaintenance management
Maintenance management
 
Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)Computer virus (Microsoft Powerpoint)
Computer virus (Microsoft Powerpoint)
 
Computer Virus powerpoint presentation
Computer Virus powerpoint presentationComputer Virus powerpoint presentation
Computer Virus powerpoint presentation
 
Maintenence management
Maintenence managementMaintenence management
Maintenence management
 

Similaire à Tbp

Enterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQEnterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQ
elliando dias
 
Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application Server
Phil Windley
 
XAJA - Reverse AJAX framework
XAJA - Reverse AJAX frameworkXAJA - Reverse AJAX framework
XAJA - Reverse AJAX framework
Sri Prasanna
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web Services
Rajarshi Guha
 
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010 Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger
 

Similaire à Tbp (20)

XML-RPC and SOAP (April 2003)
XML-RPC and SOAP (April 2003)XML-RPC and SOAP (April 2003)
XML-RPC and SOAP (April 2003)
 
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
 
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect ToolboxWebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
WebCamp 2016: PHP.Алексей Петров.PHP at Scale: System Architect Toolbox
 
Enterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQEnterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQ
 
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
 
Inter-Process/Task Communication With Message Queues
Inter-Process/Task Communication With Message QueuesInter-Process/Task Communication With Message Queues
Inter-Process/Task Communication With Message Queues
 
apidays LIVE Jakarta - REST the events: REST APIs for Event-Driven Architectu...
apidays LIVE Jakarta - REST the events: REST APIs for Event-Driven Architectu...apidays LIVE Jakarta - REST the events: REST APIs for Event-Driven Architectu...
apidays LIVE Jakarta - REST the events: REST APIs for Event-Driven Architectu...
 
Velocity 2010 - ATS
Velocity 2010 - ATSVelocity 2010 - ATS
Velocity 2010 - ATS
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
 
Using Apache as an Application Server
Using Apache as an Application ServerUsing Apache as an Application Server
Using Apache as an Application Server
 
Ecom 1
Ecom 1Ecom 1
Ecom 1
 
How bol.com makes sense of its logs, using the Elastic technology stack.
How bol.com makes sense of its logs, using the Elastic technology stack.How bol.com makes sense of its logs, using the Elastic technology stack.
How bol.com makes sense of its logs, using the Elastic technology stack.
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
PHP on Windows 2008
PHP on Windows 2008PHP on Windows 2008
PHP on Windows 2008
 
XAJA - Reverse AJAX framework
XAJA - Reverse AJAX frameworkXAJA - Reverse AJAX framework
XAJA - Reverse AJAX framework
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web Services
 
Performance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-MechanizePerformance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-Mechanize
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devices
 
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010 Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
 

Dernier

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Dernier (20)

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
Server-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at PricelineServer-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at Priceline
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 

Tbp

  • 2. 3 Problems Rendering of “my customers content” is not controlled by me, so how do I test effectively ? How do I know our servers are coping? If all ISN’T OK.. how do we quickly find out WTF HAPPENED ?
  • 3. A Suggestion Generate clientside logging to be used by test, monitoring & analysis scripts
  • 4. A few Impediments JS security problem Multi-browser support Time (“we want it now”)
  • 5. The Proposal ICAP proxy to intecept & enhance HTML Log to file through FF or Chrome R4 == RailsReads&RendersResults
  • 6. ICAP ? ICAP, the Internet Content Adaption Protocol, is a protocol aimed at providing ”simple object-based content vectoring for HTTP services”. ICAP is, in essence, a lightweight protocol for executing a quot;remote procedure callquot; on HTTP messages. It allows ICAP clients to pass HTTP messages to ICAP servers for some sort of transformation or other processing (quot;adaptationquot;). The server executes its transformation service on messages and sends back responses to the client, usually with modified messages. Typically, the adapted messages are either HTTP requests or HTTP responses. http://www.icap-forum.org/ documents/specification/rfc3507.txt
  • 8. You will need... Operating Sys: Linux ICAP Client: http://www.squid-cache.org/Download/ ICAP Server: http://sourceforge.net/projects/greasyspoon/ Runtime: Java (SE Runtime Env.) Scripting: JRuby Browser: Firefox
  • 9. Greasyspoon require 'hpricot' def process(httpresponse) document = Hpricot(httpresponse) pfhead1 = '<script language=quot;JavaScriptquot;> function peepingfrog() {alert(quot;Peeping !quot;);} </script>' (document/quot;/html/headquot;).append pfhead1 pfhead2 = '<script language=quot;JavaScriptquot;> function peep() {allloaded = 0; while(allloaded < 1) { var imagesloaded = 1; var images = document.images;for (var i = 0;i<images.length;i++) { if(images[i].complete == false) { imagesloaded = 0; } } allloaded = imagesloaded; }; window.location = quot;file://pf.txtquot;; } </script>' (document/quot;/html/headquot;).append pfhead2 (document/quot;/html/bodyquot;).set(:onload => 'quot;peep()quot;') pfbody = '<div><img src=quot;/home/mike/pf.jpgquot; alt=quot;Peep!quot;></div>' (document/quot;/html/bodyquot;).append pfbody return quot;#{document}quot; end $httpresponse = process($httpresponse)
  • 10. End of part 1 Comments ? Questions ? Suggestions ? mike.lee@europe.com