An Extensible Test Framework for Microsoft StreamInsight Alex Raizman Asvin Ananthanarayan Anton Kirilov Badrish Chandramouli Mohamed Ali.

Slides:



Advertisements
Similar presentations
OASIS OData Technical Committee. AGENDA Introduction OASIS OData Technical Committee OData Overview Work of the Technical Committee Q&A.
Advertisements

Financial Services Technology Expo Microsoft StreamInsight for Financial Services A Microsoft Point of View Presentation Hilton New York Hotel New York,
Overview of Microsoft StreamInsight
Consistent Streaming Through Time: A Vision for Event Stream Processing by Jonathan Goldstein (speaker), Roger Barga, Mohamed Ali, and Mingsheng Hong Microsoft.
Continuous Data Stream Processing  Music Virtual Channel – extensions  Data Stream Monitoring – tree pattern mining  Continuous Query Processing – sequence.
SQL Server 2008 R2 StreamInsight Complex Event Processing Event Stream Processing.
5 Complex Event Processing (CEP) is the continuous and incremental processing of event streams from multiple sources based on declarative query.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 13-1 COS 346 Day 25.
Architecture-driven Modeling and Analysis By David Garlan and Bradley Schmerl Presented by Charita Feldman.
XML Views El Hazoui Ilias Supervised by: Dr. Haddouti Advanced XML data management.
Stanford University EH&S A Service Oriented Architecture For Rich Internet Applications Sheldon M. Heitz.
Leveraging User Interactions for In-Depth Testing of Web Applications Sean McAllister, Engin Kirda, and Christopher Kruegel RAID ’08 1 Seoyeon Kang November.
Building Ad-Hoc Reports using the SQL Server 2005 Reporting Services (SSRS) Report Builder (SQL307) Adrian Rupp Business Intelligence Solutions Specialist.
DBI303. SELECT COUNT(*) FROM ParkingLot WHERE type = ‘AUTO’ AND color = ‘RED’ SELECT COUNT(*) FROM ParkingLot WHERE type = ‘AUTO’ AND color = ‘RED’
A tour of new features introducing LINQ. Agenda of LINQ Presentation We have features for every step of the way LINQ Fundamentals Anonymous Functions/Lambda.
Discover, Master, InfluenceSlide 1 SQL Server Compact Edition and the Entity Framework Rob Sanders Readify.
Microsoft Access Ervin Ha.
Oracle Developer Tools for Visual Studio.NET Curtis Rempe.
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
Databases and LINQ Visual Basic 2010 How to Program 1.
XML-QL A Query Language for XML Charuta Nakhe
SQL Server 2008 Spatial Summary 2 Spatial Data Types (CLR UDT) Comprehensive set of Spatial Methods High Performance Spatial Indexes Spatial Library Sink/Builder.
1 Overview of Databases. 2 Content Databases Example: Access Structure Query language (SQL)
Introducing Reporting Services for SQL Server 2005.
Putting it all together: LINQ as an Example. The Problem: SQL in Code Programs often connect to database servers. Database servers only “speak” SQL. Programs.
LINQ TO XML Mike Taulty Developer & Platform Group Microsoft UK
SOFTWARE TESTING Scope of Testing  The dynamic Indian IT industry has always lured the brightest minds with challenging career.

Using SAS® Information Map Studio
Querying Structured Text in an XML Database By Xuemei Luo.
John Plummer Technical Specialist Data Platform Microsoft Ltd StreamInsight Complex Event Processing (CEP) Platform.
Towards Low Overhead Provenance Tracking in Near Real-Time Stream Filtering Nithya N. Vijayakumar, Beth Plale DDE Lab, Indiana University {nvijayak,
Verification and Validation in the Context of Domain-Specific Modelling Janne Merilinna.
Event Processing A Perspective From Oracle Dieter Gawlick, Shailendra Mishra Oracle Corporation March,
Eric White Technical Evangelist Microsoft Corporation Session Code: OFC403.
[ Part III of The XML seminar ] Presenter: Xiaogeng Zhao A Introduction of XQL.
Semantically Processing The Semantic Web Presented by: Kunal Patel Dr. Gopal Gupta UNIVERSITY OF TEXAS AT DALLAS.
Has the ETL run yet?
INNOV-10 Progress® Event Engine™ Technical Overview Prashant Thumma Principal Software Engineer.
Course FAQ’s I do not have any knowledge on SQL concepts or Database Testing. Will this course helps me to get through all the concepts? What kind of.
Streaming XPath Engine Oleg Slezberg Amruta Joshi.
2 Complex Event Processing (CEP) is the continuous and incremental processing of event streams from multiple sources based on declarative query and pattern.
Comprehensive Flexible Global Storage and Search Responsive Available Secure Manageable Federation Coordination Consolidation Transformation Synchronization.
CS223: Software Engineering
ADO.NET 3.0 – Entity Data Model Gert E.R. Drapers Chief Software Architect Visual Studio Team Edition for Database Professionals Microsoft Corporation.
Language Integrated Query Mike Taulty Developer & Platform Group Microsoft Ltd
ZStream: A Cost-based Query Processor for Adaptively Detecting Composite Events Presented by Rabia Nuray-Turan and Xiaozhi Yu.
1 Chengkai Li Kevin-Chen-Chuan Chang Ihab Ilyas Sumin Song Presented by: Mariam John CSE /20/2006 RankSQL: Query Algebra and Optimization for Relational.
Design of a Notification Engine for Grid Monitoring Events and Prototype Implementation Natascia De Bortoli INFNGRID Technical Board Bologna Feb.
I Copyright © 2004, Oracle. All rights reserved. Introduction.
Top 10 Entity Framework Features Every Developer Should Know
Building Enterprise Applications Using Visual Studio®
Part 1: Overview of LINQ Intro to LINQ Presenter: PhuongNQK.
Tech Ed North America /19/2018 4:59 AM Required Slide
Introduction to Internet Programming
Populating a Data Warehouse
StreamInsight in SQL Server 2012
Populating a Data Warehouse
Populating a Data Warehouse
Lecture 12: Data Wrangling
Advanced Microsoft SQL Server 2008 R2 StreamInsight
Populating a Data Warehouse
Populating a Data Warehouse
Populating a Data Warehouse
Introduction to StreamInsight
ADO.NET Entity Framework
SSIS Data Integration Data Warehouse Acceleration
SSIS Data Integration Data Warehouse Acceleration
SSIS Data Integration Data Warehouse Acceleration
Presentation transcript:

An Extensible Test Framework for Microsoft StreamInsight Alex Raizman Asvin Ananthanarayan Anton Kirilov Badrish Chandramouli Mohamed Ali

Agenda Introduction to Microsoft StreamInsight Testing Challenges End to End test framework – Intent based testing (Declarative testing) – Event generation – Functional Verification Case study – Top K Conclusions

What is Stream Processing? Stream Processing is the continuous and incremental processing of event streams from multiple sources based on declarative query and pattern specifications with near-zero latency. RELATIONALSTREAMING Query Paradigm Ad-hoc queries or requests Continuous standing queries LatencySeconds, hours, daysMilliseconds or less Data RateHundreds of events/secTens of thousands of events/sec or more Temporal semantics OptionalIntegral to streaming queries query report Event alert

Events and Event Streams An event is a collection of fields Streaming engine provisioned timestamp fields capture all the different temporal event characteristics Event sources populate timestamp fields A stream is a sequence of events – Possibly infinite Stream characteristics: – Event/data arrival patterns (steady, bursty) – Out of order events: Order of arrival of events does not match the order of their application timestamps – Events with varying lifetimes 4

Top 2 rows ORDER BY C1 DESC Top 2 rows order by C1 DESC on a time window of size 10 Relational A join B on A.C1 = B.C1 Streaming A join B on A.C1 = B.C1 Relational Semantics Versus Streaming Semantics C1C C1C A.C1A.C2B.C SEC1C SEC1C SEA.C1A.C2B.C A A Join B B A B C1C SEC1C SEC1C C1C Out of order event Predicate matches but events do not overlap in time

StreamInsight Query Examples Example – GROUP&APPLY, WINDOW: from e3 in MyStream3 group e3 by e3.i into SubStream from win in SubStream.HoppingWindow( TenSeconds) order by win.f).Take(10); Example – GROUP&APPLY, WINDOW: from e3 in MyStream3 group e3 by e3.i into SubStream from win in SubStream.HoppingWindow( TenSeconds) order by win.f).Take(10); Example – JOIN, PROJECT, FILTER: from e1 in MyStream1 join e2 in MyStream2 on e1.ID equals e2.ID where e1.f2 == “foo” select new { e1.f1, e2.f4 }; Example – JOIN, PROJECT, FILTER: from e1 in MyStream1 join e2 in MyStream2 on e1.ID equals e2.ID where e1.f2 == “foo” select new { e1.f1, e2.f4 };

Testing Challenges Enable reuse of tests for different product languages – Multiple entry points to the query engine Event generation – Temporal characteristic. – More than payload generation Automated functional validation. – We have become very good at generating tests, but programmatic verification is still a challenge

Test Framework Output stream Property Validator Output stream Property Validator Intent Transformer Intent tree (declarative representation) Concrete tree (declarative representation) StreamInsight Query Language Transformer StreamInsight Query Language Transformer Stream Event Generator Stream Insight SQL-equivalent Query Language Transformer SQL-equivalent Query Language Transformer SQL Server SQL Server Output Stream Canonical Results Verifier Output Stream Canonical Results Verifier XML Query SQL constructs Stream events LINQ Query... Test reuse and Intent based testing Event generation Automated functional validation

Intent based testing Top K events on a window with an descending rank expression – Must have an operator as input to Top K – Must have a rank expression. Builds an intent tree. Window Rank Expression TopInput Value = K

Intent tree to Concrete tree Building out the rest of the tree. – Finalize tree by binding to stream – Extend tree with another operator – Run model to generate subtree Repository of event types Expression builder Concrete tree = test Test suite = Multiple concrete trees Value = 10 HoppingWindow Import.tulong_integral Rank Expression TopImport Window size = 10 seconds Hop Size = 10 seconds Event Stream REPOSITORY EventType = integral Stream Data Count MaxDuration Cti Rate Event Order Window Rank Expression TopInput Value = K

Stream Event Generator Two components – Temporal generation – Payload generation Supported temporal facets – event count – out of order – overlap – maximum duration of event – boundary cases – repository of pre defined patterns Payload generation – leveraged existing payload generators Tester specifies as many facets or as little as they want. Output stream Property Validator Output stream Property Validator Intent Transformer Intent tree (declarative representation) Concrete tree (declarative representation) StreamInsight Query Language Transformer StreamInsight Query Language Transformer Stream Event Generator Stream Insight SQL-equivalent Query Language Transformer SQL-equivalent Query Language Transformer SQL Server SQL Server Output Stream Canonical Results Verifier Output Stream Canonical Results Verifier XML Query SQL constructs Stream events LINQ Query...

Concrete tree to XML transform generates xml language for the test Concrete tree to LINQ transform generates C# code for the same test Query Language Transformer

Test Framework Output stream Property Validator Output stream Property Validator Intent Transformer Intent tree (declarative representation) Concrete tree (declarative representation) StreamInsight Query Language Transformer StreamInsight Query Language Transformer Stream Event Generator Stream Insight SQL-equivalent Query Language Transformer SQL-equivalent Query Language Transformer SQL Server SQL Server Output Stream Canonical Results Verifier Output Stream Canonical Results Verifier XML Query SQL constructs Stream events LINQ Query... Automated functional validation

Functional validation using SQL Value = 10 HoppingWindow Import.tulong_integal Rank Expression TopImport Window size = 10 seconds Hop Size = 10 seconds Event Stream REPOSITORY EventType = integral Stream Data Count MaxDuration Cti Rate Event Order

Functional validation using SQL SQL input table is populated with the event stream from the generator Equivalent SQL Queries are run over the input table Output of the StreamInsight query is also piped into SQL Server using output adapter Compares SQL output with output from StreamInsight for equality. If comparison fails  BUG!

Conclusions Intent based testing allows testers to think about test scenarios leading to richer, more interesting tests. A relational database can work as a test oracle for validating streaming queries. Most of the bugs were due to interesting temporal aspects of the event stream. Not everything can / should be tested using intent based techniques. – Negative tests, boundary cases

QUESTIONS ?

For More Information StreamInsight main page & download : complex-event.aspx complex-event.aspx StreamInsight blog: StreamInsight MSDN documentation: us/library/ee362541(SQL.105).aspx us/library/ee362541(SQL.105).aspx StreamInsight E-clinics on Microsoft e-learning