Testing the Hard Stuff and Staying Sane. John Hughes

Size: px
Start display at page:

Download "Testing the Hard Stuff and Staying Sane. John Hughes"

Transcription

1 Testing the Hard Stuff and Staying Sane John Hughes

2 Why is testing hard? n features O(n) 23 ) test cases 3 4 tests per triples pairs race of feature conditions of features

3 Don t write tests! Generate them

4 Problem How do we know whether an arbitrary test has passed or failed? expected results can t be used general properties can be checked Property-based testing

5 QuickCheck 1999 invented by Koen Claessen and myself (ICFP 2000), in Haskell, for purely functional code 2006 Quviq founded marketing Erlang version State machines, race condition testing, etc Lots of fun solving challenging testing problems in the field

6 What does it do? API under test A minimal failing example

7 Let s see it in action

8 State Machine Models Erlang API Calls API Calls API Calls API Calls postconditions Erlang Model state Model state Model state Model state Erlang

9 Example put 1 put 2 get put 3 get [] [1] [1,2] [2] [2,3] 1 2

10 Code Fragments: specifying get get_pre(s) -> S#state.ptr /= undefined andalso S#state.contents /= []. get_next(s,_value,_args) -> S#state{contents=tl(S#state.contents)}. get_post(s,_args,res) -> eq(res,hd(s#state.contents)). Precondition State transition Postcondition

11 Time for some tests!

12 Lessons The same property can find many different bugs Minimal failing tests make diagnosis easy

13

14 Doing it for real 500 pages of specifications

15 Theory Car manufacturers should be able to buy code from different providers and have them work seamlessly together

16 Practice VOLVO's experience has been that this is often not the case

17 ~20,000 lines of QuickCheck code Vendor code 3,000 pages of pdfs

18 A Bug in a vendor s CAN stack 1 sent send priority 1 send priority 2 send priority 3 tx_confirm sending 1 queued sending 3 19

19 The Problem CAN bus identifiers determine bus priority

20 A Bug in a vendor s CAN stack send priority 1 sending 1 send priority 2 queued 1 sent send priority 3 tx_confirm sending 3 Failed to mask off the top bit before comparing priorities 21

21 AutoSAR results > 200 issues discovered > 100 bugs in the standard Test code 9x smaller than conventional TTCN- 3 tests and tests more! Test code 3-6x smaller than implementations

22 Riak: a no-sql distributed database Network partition Eventual consistency Data is replicated on 3 different nodes Thanks to: Dave Smith, Jon Meredith, Scott Fritchie

23 Data loss! A Riak bug

24 What does it mean? QuickCheck found An extreme failure scenario Leading to loss of data A failure of eventual consistency So is Riak buggy?

25 "We know there is a lurking bug somewhere in the dets code. We have got 'bad object' and 'premature eof' every other month the last year. We have not been able to track the bug down since the dets files is repaired automatically next time it is opened. Tobbe Törnqvist, Klarna, 2007

26 What is it? Application Mnesia Dets File system Invoicing services for web shops Distributed database: transactions, distribution, replication Tuple storage Race conditions?

27 Imagine Testing This dispenser:take_ticket() dispenser:reset()

28 A Unit Test in Erlang test_dispenser() -> ok = reset(), 1 = take_ticket(), 2 = take_ticket(), 3 = take_ticket(), ok = reset(), 1 = take_ticket(). Expected results

29 Modelling the dispenser reset take take take ok 1 2 3

30 A Parallel Unit Test reset ok take_ticket take_ticket take_ticket Three possible correct outcomes!

31 Another Parallel Test reset take_ticket take_ticket take_ticket take_ticket reset 30 possible correct outcomes!

32 Deciding a Parallel Test reset ok take 1 take 3 take

33 Let s run some tests

34 take_ticket() -> N = read(), Prefix: write(n+1), N+1. Parallel: 1. dispenser:take_ticket() --> 1 2. dispenser:take_ticket() --> 1 Result: no_possible_interleaving

35 dets Tuple store: {Key, Value1, Value2 } Operations: insert(table,listoftuples) delete(table,key) insert_new(table,listoftuples) Model: List of tuples (almost)

36 QuickCheck Specification > 6,000 LOC <100 LOC

37 Bug #1 Prefix: Types: open_file(dets_table,[{type,bag}]) --> Name = name() dets_table Parallel: 1. insert(dets_table,[]) Bool = bool() --> ok insert_new(name, Objects) -> Bool Objects = object() [object()] 2. insert_new(dets_table,[]) --> ok Result: no_possible_interleaving

38 Bug #2 Prefix: open_file(dets_table,[{type,set}]) --> dets_table Parallel: 1. insert(dets_table,{0,0}) --> ok 2. insert_new(dets_table,{0,0}) --> time out =ERROR REPORT==== 4-Oct-2010::17:08:21 === ** dets: Bug was found when accessing table dets_table

39 Bug #3 Prefix: open_file(dets_table,[{type,set}]) --> dets_table Parallel: 1. open_file(dets_table,[{type,set}]) --> dets_table 2. insert(dets_table,{0,0}) --> ok get_contents(dets_table) --> [] Result: no_possible_interleaving!

40 Is the file corrupt?

41 Bug #4 Prefix: open_file(dets_table,[{type,bag}]) --> dets_table close(dets_table) --> ok open_file(dets_table,[{type,bag}]) --> dets_table Parallel: 1. lookup(dets_table,0) --> [] 2. insert(dets_table,{0,0}) --> ok 3. insert(dets_table,{0,0}) --> ok Result: ok premature eof

42 Bug #5 Prefix: open_file(dets_table,[{type,set}]) --> dets_table insert(dets_table,[{1,0}]) --> ok Parallel: 1. lookup(dets_table,0) --> [] delete(dets_table,1) --> ok 2. open_file(dets_table,[{type,set}]) --> dets_table Result: ok false bad object

43 "We know there is a lurking bug somewhere in the dets code. We have got 'bad object' and 'premature eof' every other month the last year. Tobbe Törnqvist, Klarna, 2007 Each bug fixed the day after reporting the failing case

44 Before After Files over 1GB? Rehashing? > 6 weeks of effort! Database with one record! 5 calls to reproduce < 1 day to fix

45 Property-based testing Lets us test more with less effort Finds bugs in everything we test

46 Don t write tests Generate them!

47 Where to find out more Haskell QuickCheck The original ICFP 2000 Quviq QuickCheck Commercial tool & services Many, many tools inspired by QuickCheck ScalaCheck, FsCheck, test.generate

48 What does it feel like? Docs QC Spec Code

49

50 Properties vs test cases Code sizes for the Flexray interface: Lines of code TTCN-3 test cases QuickCheck and Erlang 9x smaller code! and it tests more!

51 Properties vs implementations Code QuickCheck 0 CAN DEM FlexRay COM The test code is 3 6x smaller than the implementation

Property-based testing, race conditions, and QuickCheck. John Hughes

Property-based testing, race conditions, and QuickCheck. John Hughes Property-based testing, race conditions, and QuickCheck John Hughes QuickCheck in a Nutshell Properties Test Test case case Test Test case case Test case Minimal Test case Benefits Less time spent writing

More information

Be#er Tes(ng with Less Work: QuickCheck Tes(ng in Prac(ce. John Hughes

Be#er Tes(ng with Less Work: QuickCheck Tes(ng in Prac(ce. John Hughes Be#er Tes(ng with Less Work: QuickCheck Tes(ng in Prac(ce John Hughes QuickCheck in a Nutshell Proper(es Test Test case case Test Test case case Test case Minimal Test case Benefits Less (me spent wri(ng

More information

Testing. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 2. [Faculty of Science Information and Computing Sciences]

Testing. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 2. [Faculty of Science Information and Computing Sciences] Testing Advanced functional programming - Lecture 2 Wouter Swierstra and Alejandro Serrano 1 Program Correctness 2 Testing and correctness When is a program correct? 3 Testing and correctness When is a

More information

QuickCheck, SmallCheck & Reach: Automated Testing in Haskell. Tom Shackell

QuickCheck, SmallCheck & Reach: Automated Testing in Haskell. Tom Shackell QuickCheck, SmallCheck & Reach: Automated Testing in Haskell By Tom Shackell A Brief Introduction to Haskell Haskell is a purely functional language. Based on the idea of evaluation of mathematical functions

More information

QuickCheck Mini for Elixir. Thomas Arts Quviq AB

QuickCheck Mini for Elixir. Thomas Arts Quviq AB QuickCheck Mini for Elixir Thomas Arts Quviq AB From Unit test to Property Most developers agree that writing unit tests is useful. but also quickly gets boring An example: Does Erlang lists:seq(n,m) do

More information

AUTO-CAAS: Model-Based Fault Prediction and Diagnosis of Automotive Software

AUTO-CAAS: Model-Based Fault Prediction and Diagnosis of Automotive Software AUTO-CAAS: Model-Based Fault Prediction and Diagnosis of Automotive Software Wojciech Mostowski Halmstad University, Sweden AstaZero Researchers Day 2016 hhse Outline 1 Project overview 2 Consortium 3

More information

Testing for the Unexpected

Testing for the Unexpected Erlang Solutions Ltd. Testing for the Unexpected Ulf Wiger, CTO Erlang Solutions Ltd QCon, London 2011 1999-2011 Erlang Solutions Ltd. About me Spent 4 years in Alaska working on Military Command & Control

More information

WebDriver: Controlling your Web Browser

WebDriver: Controlling your Web Browser WebDriver: Controlling your Web Browser Erlang User Conference 2013 Hans Svensson, Quviq AB hans.svensson@quviq.com First, a confession... I have a confession to make... I have built a web system! In PHP!...

More information

Breaking your code in new and exciting ways. Michael Newton

Breaking your code in new and exciting ways. Michael Newton Breaking your code in new and exciting ways Michael Newton (@mavnn) Who am I? 15below telling you your flight s been delayed for 15 years and counting Keeping up with the latest hammers Open source (personal

More information

Software System Design and Implementation

Software System Design and Implementation Software System Design and Implementation Property-based Testing Gabriele Keller The University of New South Wales School of Computer Science and Engineering Sydney, Australia COMP3141 17s1 Testing in

More information

Mnesia Backend Plugin Framework and a LevelDB Based Plugin Presented on EUC by

Mnesia Backend Plugin Framework and a LevelDB Based Plugin Presented on EUC by Erlang Solutions Ltd Mnesia Backend Plugin Framework and a LevelDB Based Plugin Presented 2012-05-28 on EUC by Roland Karlsson - ESL Malcolm Matalka - Klarna Introduction Malcolm Matalka - Joined Klarna

More information

TESTING WEB SERVICES WITH WEBDRIVER AND QUICKCHECK

TESTING WEB SERVICES WITH WEBDRIVER AND QUICKCHECK TESTING WEB SERVICES WITH WEBDRIVER AND QUICKCHECK Alex Gerdes (joint work with Thomas Arts, John Hughes, Hans Svensson and Ulf Norell) QuviQ AB ABOUT ME From the Netherlands, now living in Sweden Worked

More information

Large-scale Game Messaging in Erlang at IMVU

Large-scale Game Messaging in Erlang at IMVU Large-scale Game Messaging in Erlang at IMVU Jon Watte Technical Director, IMVU Inc @jwatte / #erlangfactory Presentation Overview Describe the problem Low-latency game messaging and state distribution

More information

All you need is fun. Cons T Åhs Keeper of The Code

All you need is fun. Cons T Åhs Keeper of The Code All you need is fun Cons T Åhs Keeper of The Code cons@klarna.com Cons T Åhs Keeper of The Code at klarna Architecture - The Big Picture Development - getting ideas to work Code Quality - care about the

More information

Finding Race Conditions in Erlang with QuickCheck and PULSE

Finding Race Conditions in Erlang with QuickCheck and PULSE Finding Race Conditions in Erlang with QuickCheck and PULSE Koen Claessen Michał Pałka Nicholas Smallbone Chalmers University of Technology, Gothenburg, Sweden koen@chalmers.se michal.palka@chalmers.se

More information

Introduction to Functional Programming. Slides by Koen Claessen and Emil Axelsson

Introduction to Functional Programming. Slides by Koen Claessen and Emil Axelsson Introduction to Functional Programming Slides by Koen Claessen and Emil Axelsson Goal of the Course Start from the basics Learn to write small-to-medium sized programs in Haskell Introduce basic concepts

More information

Driven by a passion to develop our customers, SuperOffice has become one of Europes leading providers of CRM solutions.

Driven by a passion to develop our customers, SuperOffice has become one of Europes leading providers of CRM solutions. News Caesar CRM 2018 R1 Driven by a passion to develop our customers, SuperOffice has become one of Europes leading providers of CRM solutions. Do you want to increase your sales, customer loyalty and

More information

How does ML deal with +?

How does ML deal with +? How does ML deal with +? Moscow ML version 2.00 (June 2000) - op +; > val it = fn : int * int -> int - 1 + 1; > val it = 2 : int - 1.0 + 1.0; > val it = 2.0 : real - false + false;! Overloaded + cannot

More information

CS11 Introduction to C++ Fall Lecture 7

CS11 Introduction to C++ Fall Lecture 7 CS11 Introduction to C++ Fall 2012-2013 Lecture 7 Computer Strategy Game n Want to write a turn-based strategy game for the computer n Need different kinds of units for the game Different capabilities,

More information

Papers we love - Utrecht

Papers we love - Utrecht Papers we love - Utrecht QuickCheck Wouter Swierstra 1 Requirements for a topic A paper that I love 2 Requirements for a topic A paper that I love A paper that is interesting to academics and developers

More information

Static Contract Checking for Haskell

Static Contract Checking for Haskell Static Contract Checking for Haskell Dana N. Xu INRIA France Work done at University of Cambridge Simon Peyton Jones Microsoft Research Cambridge Joint work with Koen Claessen Chalmers University of Technology

More information

Finding Race Conditionsduring

Finding Race Conditionsduring Finding Race Conditionsduring UnitTesting with QuickCheck John Hughes (Quviq/Chalmers) Koen Claessen, Michal Palka, Nick Smallbone (Chalmers) Thomas Arts, Hans Svensson (Quviq/Chalmers) UlfWiger, (ErlangTrainingand

More information

CSE 143. Programming is... Principles of Programming and Software Engineering. The Software Lifecycle. Software Lifecycle in HW

CSE 143. Programming is... Principles of Programming and Software Engineering. The Software Lifecycle. Software Lifecycle in HW Principles of Programming and Software Engineering Textbook: hapter 1 ++ Programming Style Guide on the web) Programming is......just the beginning! Building good software is hard Why? And what does "good"

More information

Erlang in the battlefield. Łukasz Kubica Telco BSS R&D Department Cracow Erlang Factory Lite, 2013

Erlang in the battlefield. Łukasz Kubica Telco BSS R&D Department Cracow Erlang Factory Lite, 2013 Erlang in the battlefield Łukasz Kubica Telco BSS R&D Department Cracow Erlang Factory Lite, 2013 Agenda Introduction to the SCM Erlang vm and upgrades Tracing Mnesia Final thoughts Questions 2 The Session

More information

Don t Judge Software by Its (Code) Coverage

Don t Judge Software by Its (Code) Coverage Author manuscript, published in "SAFECOMP 2013 - Workshop CARS (2nd Workshop on Critical Automotive applications : Robustness & Safety) of the 32nd International Conference on Computer Safety, Reliability

More information

GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) DOWNLOAD EBOOK : GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) PDF

GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) DOWNLOAD EBOOK : GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) PDF GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD (DESIGN BRIEFS) DOWNLOAD EBOOK : GRAPHIC DESIGN THEORY: READINGS FROM THE FIELD Click link bellow and free register to download ebook: GRAPHIC DESIGN THEORY:

More information

Erlang Programming. for Multi-core. Ulf Wiger. QCON London, March 12 th,

Erlang Programming. for Multi-core. Ulf Wiger. QCON London, March 12 th, Erlang Programming Erlang Training and Consulting Ltd for Multi-core QCON London, March 12 th, 2009 http://www.protest-project.eu/ Ulf Wiger ulf.wiger@erlang-consulting.com The age of multicore Fraction

More information

Distributed Objects. Object-Oriented Application Development

Distributed Objects. Object-Oriented Application Development Distributed s -Oriented Application Development Procedural (non-object oriented) development Data: variables Behavior: procedures, subroutines, functions Languages: C, COBOL, Pascal Structured Programming

More information

Two Testing Tools for the Erlang Ecosystem

Two Testing Tools for the Erlang Ecosystem Two Testing Tools for the Erlang Ecosystem Kostis Sagonas Some material is joint work with Andreas Löscher Stavros Aronis and Scott Lystig Fritchie PropEr proper.softlab.ntua.gr PropEr: A property-based

More information

Eventually Consistent HTTP with Statebox and Riak

Eventually Consistent HTTP with Statebox and Riak Eventually Consistent HTTP with Statebox and Riak Author: Bob Ippolito (@etrepum) Date: November 2011 Venue: QCon San Francisco 2011 1/62 Introduction This talk isn't really about web. It's about how we

More information

Hoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré

Hoare Logic. COMP2600 Formal Methods for Software Engineering. Rajeev Goré Hoare Logic COMP2600 Formal Methods for Software Engineering Rajeev Goré Australian National University Semester 2, 2016 (Slides courtesy of Ranald Clouston) COMP 2600 Hoare Logic 1 Australian Capital

More information

Property Based Testing : Shrinking Risk In Your Code. Amanda Pariveda Solutions Consultant Mined Minds Co-Founder

Property Based Testing : Shrinking Risk In Your Code. Amanda Pariveda Solutions Consultant Mined Minds Co-Founder Property Based Testing : Shrinking Risk In Your Code Amanda Laucher @pandamonial Pariveda Solutions Consultant Mined Minds Co-Founder What is Property Based Testing? Patterns for specifying properties

More information

Choosing the web s future. Peter-Paul Koch Van Lanschot, 9 February 2017

Choosing the web s future. Peter-Paul Koch   Van Lanschot, 9 February 2017 Choosing the web s future Peter-Paul Koch http://quirksmode.org http://twitter.com/ppk Van Lanschot, 9 February 2017 Four problems 1. Web developers want to emulate native apps, which I think is not possible

More information

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

More information

Vector Clocks in Coq

Vector Clocks in Coq Vector Clocks in Coq An Experience Report Christopher Meiklejohn Basho Technologies, Inc. Cambridge, MA 02139 cmeiklejohn@basho.com March 6, 2014 Outline of the talk Introduction Background Implementation

More information

Data Structures. Datatype. Data structure. Today: Two examples. A model of something that we want to represent in our program

Data Structures. Datatype. Data structure. Today: Two examples. A model of something that we want to represent in our program Datastructures Data Structures Datatype A model of something that we want to represent in our program Data structure A particular way of storing data How? Depending on what we want to do with the data

More information

Top 6 Mac user mistakes

Top 6 Mac user mistakes E-book Top 6 Mac user mistakes! applecoursesonline.com Bad habits can damage your Mac, make it messy and definitely give it a shorter lifespan. Make sure you stop doing this! Print this e-book and have

More information

Map-Reduce. John Hughes

Map-Reduce. John Hughes Map-Reduce John Hughes The Problem 850TB in 2006 The Solution? Thousands of commodity computers networked together 1,000 computers 850GB each How to make them work together? Early Days Hundreds of ad-hoc

More information

Dependability tree 1

Dependability tree 1 Dependability tree 1 Means for achieving dependability A combined use of methods can be applied as means for achieving dependability. These means can be classified into: 1. Fault Prevention techniques

More information

Write for your audience

Write for your audience Comments Write for your audience Program documentation is for programmers, not end users There are two groups of programmers, and they need different kinds of documentation Some programmers need to use

More information

C++ Memory Model. Don t believe everything you read (from shared memory)

C++ Memory Model. Don t believe everything you read (from shared memory) C++ Memory Model Don t believe everything you read (from shared memory) The Plan Why multithreading is hard Warm-up example Sequential Consistency Races and fences The happens-before relation The DRF guarantee

More information

Default arguments, documentation

Default arguments, documentation , documentation Comp Sci 1570 Introduction to C++ Outline 1 2 to functions A default parameter (also called an optional parameter or a default argument) is a function parameter that has a default value

More information

An expressive semantics of mocking

An expressive semantics of mocking An expressive semantics of mocking Josef Svenningsson 1, Hans Svensson 2, Nicholas Smallbone 1, Thomas Arts 2, Ulf Norell 1,2, and John Hughes 1,2 1 Chalmers University of Technology, Gothenburg, Sweden

More information

Scaling CQUAL to millions of lines of code and millions of users p.1

Scaling CQUAL to millions of lines of code and millions of users p.1 Scaling CQUAL to millions of lines of code and millions of users Jeff Foster, Rob Johnson, John Kodumal and David Wagner {jfoster,rtjohnso,jkodumal,daw}@cs.berkeley.edu. UC Berkeley Scaling CQUAL to millions

More information

Property-Based Testing for Coq. Cătălin Hrițcu

Property-Based Testing for Coq. Cătălin Hrițcu Property-Based Testing for Coq Cătălin Hrițcu Prosecco Reading Group - Friday, November 29, 2013 The own itch I m trying to scratch hard to devise correct safety and security enforcement mechanisms (static

More information

Lectures 20, 21: Axiomatic Semantics

Lectures 20, 21: Axiomatic Semantics Lectures 20, 21: Axiomatic Semantics Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Static Analysis Based on slides by George Necula Pratikakis (CSD) Axiomatic Semantics

More information

CITS5501 Software Testing and Quality Assurance Formal methods

CITS5501 Software Testing and Quality Assurance Formal methods CITS5501 Software Testing and Quality Assurance Formal methods Unit coordinator: Arran Stewart May 1, 2018 1 / 49 Sources Pressman, R., Software Engineering: A Practitioner s Approach, McGraw-Hill, 2005

More information

Can We Trust SQL as a Data Analytics Tool?

Can We Trust SQL as a Data Analytics Tool? Can We Trust SQL as a Data nalytics Tool? SQL The query language for relational databases International Standard since 1987 Implemented in all systems (free and commercial) $30B/year business Most common

More information

Plan of the lecture. Quick-Sort. Partition of lists (or using extra workspace) Quick-Sort ( 10.2) Quick-Sort Tree. Partitioning arrays

Plan of the lecture. Quick-Sort. Partition of lists (or using extra workspace) Quick-Sort ( 10.2) Quick-Sort Tree. Partitioning arrays Plan of the lecture Quick-sort Lower bounds on comparison sorting Correctness of programs (loop invariants) Quick-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 Lecture 16 1 Lecture 16 2 Quick-Sort (

More information

Guides for Installing MS SQL Server and Creating Your First Database. Please see more guidelines on installing procedure on the class webpage

Guides for Installing MS SQL Server and Creating Your First Database. Please see more guidelines on installing procedure on the class webpage Guides for Installing MS SQL Server and Creating Your First Database Installing process Please see more guidelines on installing procedure on the class webpage 1. Make sure that you install a server with

More information

QGIS Application - Bug report #18988 QGIS Server rendering different from Desktop rendering

QGIS Application - Bug report #18988 QGIS Server rendering different from Desktop rendering QGIS Application - Bug report #18988 QGIS Server rendering different from Desktop rendering 04:13 PM - Status: Closed Priority: rmal Assignee: Paul Blottiere Category: QGIS Server Affected QGIS version:3.1(master)

More information

Data structures. Priority queues, binary heaps. Dr. Alex Gerdes DIT961 - VT 2018

Data structures. Priority queues, binary heaps. Dr. Alex Gerdes DIT961 - VT 2018 Data structures Priority queues, binary heaps Dr. Alex Gerdes DIT961 - VT 2018 Announcements Course representatives - Mohamad Qutbuddin Habib - Carl Agrell - Gunnar Stenlund Kunsulttid: jag är på kontor

More information

6.033 Lecture Fault Tolerant Computing 3/31/2014

6.033 Lecture Fault Tolerant Computing 3/31/2014 6.033 Lecture 14 -- Fault Tolerant Computing 3/31/2014 So far what have we seen: Modularity RPC Processes Client / server Networking Implements client/server Seen a few examples of dealing with faults

More information

Map-Reduce (PFP Lecture 12) John Hughes

Map-Reduce (PFP Lecture 12) John Hughes Map-Reduce (PFP Lecture 12) John Hughes The Problem 850TB in 2006 The Solution? Thousands of commodity computers networked together 1,000 computers 850GB each How to make them work together? Early Days

More information

Analysis Tool Project

Analysis Tool Project Tool Overview The tool we chose to analyze was the Java static analysis tool FindBugs (http://findbugs.sourceforge.net/). FindBugs is A framework for writing static analyses Developed at the University

More information

MySQL X Protocol Talking to MySQL Directly over the Wire

MySQL X Protocol Talking to MySQL Directly over the Wire MySQL X Protocol Talking to MySQL Directly over the Wire Simon J Mudd Percona Live Europe Amsterdam 5 th October 2016 Content What is MySQL X protocol How does it work Building

More information

Winter 2019 CISC101 1/17/2019

Winter 2019 CISC101 1/17/2019 CISC101 Reminders Today TA emails are listed on the Labs page of the course web site. More assignments are posted. Commanding the CPU the use of a Stack. Computer Languages History of Python. Features

More information

Erlang and Thrift for Web Development

Erlang and Thrift for Web Development Erlang and Thrift for Web Development Todd Lipcon (@tlipcon) Cloudera June 25, 2009 Introduction Erlang vs PHP Thrift A Case Study About Me Who s this dude who looks like he s 14? Built web sites in Perl,

More information

Advanced Systems Lab (Intro and Administration) G. Alonso Systems Group

Advanced Systems Lab (Intro and Administration) G. Alonso Systems Group Advanced Systems Lab (Intro and Administration) G. Alonso Systems Group http://www.systems.ethz.ch Overview of the Course Focus on project Individual project during semester (3 milestones) This is a project

More information

Saturday, 5 September Good Morning.

Saturday, 5 September Good Morning. Good Morning. Good Morning! ank you for inviting me. Saturday, 5 September 2009 Who? Jan Lehnardt Hacker Entrepreneur capitalizing words say we mean it I come from The Web Open Source makes me happy again!

More information

Inside look at benchmarks Wim Coekaerts Senior Vice President, Linux and Virtualization Engineering. Wednesday, August 17, 11

Inside look at benchmarks Wim Coekaerts Senior Vice President, Linux and Virtualization Engineering. Wednesday, August 17, 11 Inside look at benchmarks Wim Coekaerts Senior Vice President, Linux and Virtualization Engineering Overview Purpose of benchmarks Who is involved? What kind of benchmarks exist out there? Benchmarks are

More information

A PropEr Talk. Kostis Sagonas. With PropEr help by Manolis Papadakis Eirini Arvaniti

A PropEr Talk. Kostis Sagonas. With PropEr help by Manolis Papadakis Eirini Arvaniti A PropEr Talk Kostis Sagonas With PropEr help by Manolis Papadakis Eirini Arvaniti A PropEr announcement A PropEr question Why did you create PropEr? How Erlang modules used to look How modern Erlang modules

More information

How to Improve Test Team Effectiveness Using Test Entities

How to Improve Test Team Effectiveness Using Test Entities How to Improve Test Team Effectiveness Using Test Entities John Kent: john.kent@simplytesting.com How to Improve Test Team Effectiveness using Test Entities Discussions at the Test Retreat A work in progress

More information

Ios 7 Manual Restore From Icloud Slow >>>CLICK HERE<<<

Ios 7 Manual Restore From Icloud Slow >>>CLICK HERE<<< Ios 7 Manual Restore From Icloud Slow Learn how to stop an icloud Restore that is stuck in progress in less than a minute. the content, maybe up to a day on a slow connection and an almost full iphone,

More information

QuickCheck: Beyond the Basics

QuickCheck: Beyond the Basics QuickCheck: Beyond the Basics Dave Laing May 13, 2014 Basic QuickCheck Some properties reverse_involutive :: [Int] -> Bool reverse_involutive xs = xs == (reverse. reverse) xs sort_idempotent :: [Int] ->

More information

CODE CENTRIC: T-SQL PROGRAMMING WITH STORED PROCEDURES AND TRIGGERS BY GARTH WELLS

CODE CENTRIC: T-SQL PROGRAMMING WITH STORED PROCEDURES AND TRIGGERS BY GARTH WELLS CODE CENTRIC: T-SQL PROGRAMMING WITH STORED PROCEDURES AND TRIGGERS BY GARTH WELLS DOWNLOAD EBOOK : CODE CENTRIC: T-SQL PROGRAMMING WITH STORED Click link bellow and free register to download ebook: CODE

More information

DR Planning. Presented by. Matt Stolk Associate Director Northwest Regional Data Center Florida State University

DR Planning. Presented by. Matt Stolk Associate Director Northwest Regional Data Center Florida State University DR Planning Presented by Matt Stolk Associate Director Northwest Regional Data Center Florida State University Why are we here? Over the last couple of years, business continuity has become more of a priority

More information

Abstract Interpretation Using Laziness: Proving Conway s Lost Cosmological Theorem

Abstract Interpretation Using Laziness: Proving Conway s Lost Cosmological Theorem Abstract Interpretation Using Laziness: Proving Conway s Lost Cosmological Theorem Kevin Watkins CMU CSD POP Seminar December 8, 2006 In partial fulfillment of the speaking skills requirement ? 2111 1231

More information

Network Security - ISA 656 Intro to Firewalls

Network Security - ISA 656 Intro to Firewalls Network Security - ISA 656 Intro to s Angelos Stavrou August 20, 2008 What s a Intro to s What s a Why Use s? Traditional s Advantages Philosophies Devices examining traffic making access control decisions

More information

CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018

CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 Taken from assignments by Profs. Carl Offner and Ethan Bolker Part 1 - Modifying The Metacircular Evaluator

More information

Course Overview. ECE 1779 Introduction to Cloud Computing. Marking. Class Mechanics. Eyal de Lara

Course Overview. ECE 1779 Introduction to Cloud Computing. Marking. Class Mechanics. Eyal de Lara ECE 1779 Introduction to Cloud Computing Eyal de Lara delara@cs.toronto.edu www.cs.toronto.edu/~delara/courses/ece1779 Course Overview Date Topic Sep 14 Introduction Sep 21 Python Sep 22 Tutorial: Python

More information

=tg= Thomas H. Grohser, bwin

=tg= Thomas H. Grohser, bwin =tg= Thomas H. Grohser, bwin select * from =tg= @@Version Remark SQL 4.21 First SQL Server ever used (1994) SQL 6.0 First Log Shipping with failover SQL 6.5 First SQL Server Cluster (NT4.0 + Wolfpack)

More information

Implementing native IPv6 on DSL

Implementing native IPv6 on DSL Implementing native IPv6 on DSL Inventing the wheel marco@xs4all.net oktober 2010 Who is XS4ALL One of the oldest ISPs in the Netherlands Founded May 1st 1993 Originally as a not for profit Origins in

More information

PAL Sessions: COMP1100 focus: 3pm daily, GEOG 202 COMP1130 focus: 1pm Thursday, GEOG 202

PAL Sessions: COMP1100 focus: 3pm daily, GEOG 202 COMP1130 focus: 1pm Thursday, GEOG 202 PAL Sessions: COMP1100 focus: 3pm daily, GEOG 202 COMP1130 focus: 1pm Thursday, GEOG 202 Assessments reminder Assignment 1: out this week, stage 1 due on 31 March (census date), stage 2 due after the teaching

More information

CS390 Principles of Concurrency and Parallelism. Lecture Notes for Lecture #5 2/2/2012. Author: Jared Hall

CS390 Principles of Concurrency and Parallelism. Lecture Notes for Lecture #5 2/2/2012. Author: Jared Hall CS390 Principles of Concurrency and Parallelism Lecture Notes for Lecture #5 2/2/2012 Author: Jared Hall This lecture was the introduction the the programming language: Erlang. It is important to understand

More information

Plural and : Protocols in Practice. Jonathan Aldrich Workshop on Behavioral Types April School of Computer Science

Plural and : Protocols in Practice. Jonathan Aldrich Workshop on Behavioral Types April School of Computer Science Plural and : Protocols in Practice Jonathan Aldrich Workshop on Behavioral Types April 2011 School of Computer Science Empirical Study: Protocols in Java Object Protocol [Beckman, Kim, & A to appear in

More information

Database Architectures

Database Architectures Database Architectures CPS352: Database Systems Simon Miner Gordon College Last Revised: 4/15/15 Agenda Check-in Parallelism and Distributed Databases Technology Research Project Introduction to NoSQL

More information

SMBC: Engineering a Fast Solver in OCaml

SMBC: Engineering a Fast Solver in OCaml SMBC: Engineering a Fast Solver in OCaml Simon Cruanes Veridis, Inria Nancy https://cedeela.fr/~simon/ 28th of March, 2017 Simon Cruanes SMBC 28th of March, 2017 1 / 17 Summary 1 Presentation of SMBC (

More information

So far, we know: Wednesday, October 4, Thread_Programming Page 1

So far, we know: Wednesday, October 4, Thread_Programming Page 1 Thread_Programming Page 1 So far, we know: 11:50 AM How to create a thread via pthread_mutex_create How to end a thread via pthread_mutex_join How to lock inside a thread via pthread_mutex_lock and pthread_mutex_unlock.

More information

Creating the Fastest Possible Backups Using VMware Consolidated Backup. A Design Blueprint

Creating the Fastest Possible Backups Using VMware Consolidated Backup. A Design Blueprint Creating the Fastest Possible Backups Using VMware Consolidated Backup A Design Blueprint George Winter Technical Product Manager NetBackup Symantec Corporation Agenda Overview NetBackup for VMware and

More information

CSE Theory of Computing Fall 2017 Project 3: K-tape Turing Machine

CSE Theory of Computing Fall 2017 Project 3: K-tape Turing Machine CSE 30151 Theory of Computing Fall 2017 Project 3: K-tape Turing Machine Version 1: Oct. 23, 2017 1 Overview The goal of this project is to have each student understand at a deep level the functioning

More information

Eventual Consistency. Eventual Consistency

Eventual Consistency. Eventual Consistency Eventual Consistency Many systems: one or few processes perform updates How frequently should these updates be made available to other read-only processes? Examples: DNS: single naming authority per domain

More information

Backups and archives: What s the scoop?

Backups and archives: What s the scoop? E-Guide Backups and archives: What s the scoop? What s a backup and what s an archive? For starters, one of the differences worth noting is that a backup is always a copy while an archive should be original

More information

Oracle Mix. A Case Study. Ola Bini JRuby Core Developer ThoughtWorks Studios.

Oracle Mix. A Case Study. Ola Bini JRuby Core Developer ThoughtWorks Studios. Oracle Mix A Case Study Ola Bini JRuby Core Developer ThoughtWorks Studios ola.bini@gmail.com http://olabini.com/blog Vanity slide Vanity slide Ola Bini Vanity slide Ola Bini From Stockholm, Sweden Vanity

More information

From Types to Contracts

From Types to Contracts From Types to Contracts head [] = BAD head (x:xs) = x head :: [a] -> a (head 1) Bug! Type BAD means should not happen: crash null :: [a] - > Bool null [] = True null (x:xs) = False head {xs not (null xs)}

More information

Cell Phone Upgrade Time Help!

Cell Phone Upgrade Time Help! Cell Phone Upgrade Time Help! Ok, team, I have Sprint and am due for an upgrade. I have the Samsung Galaxy S2 and have been pretty happy with it, and thought I would just bump up to the S4. But, I have

More information

Many applications. Lots of cascading subsystems (MySQL, Caches, foreign APIs, )

Many applications. Lots of cascading subsystems (MySQL, Caches, foreign APIs, ) Fuse Let it crash & handle with grace 10 June 2014 Jesper Louis Andersen The problem Large complex Erlang systems cannot avoid: Many applications. Lots of cascading subsystems (MySQL, Caches, foreign APIs,

More information

!"#$%&'())*'"+,&-,.-!! 1

!#$%&'())*'+,&-,.-!! 1 !"#$%&'())*'"+,&-,.-!! 1 Thinking about thinking in code George V. Neville-Neil Ottawa, Canada What is this about? 3 What is this about? This is not about any particular BSD 3 What is this about? This

More information

Black-box Testing Techniques

Black-box Testing Techniques T-76.5613 Software Testing and Quality Assurance Lecture 4, 20.9.2006 Black-box Testing Techniques SoberIT Black-box test case design techniques Basic techniques Equivalence partitioning Boundary value

More information

Functional Programming in Ruby

Functional Programming in Ruby Functional Programming in Ruby Coding with Style koen handekyn This book is for sale at http://leanpub.com/functionalprogramminginruby This version was published on 2014-04-17 This is a Leanpub book. Leanpub

More information

Reasoning About Imperative Programs. COS 441 Slides 10

Reasoning About Imperative Programs. COS 441 Slides 10 Reasoning About Imperative Programs COS 441 Slides 10 The last few weeks Agenda reasoning about functional programming It s very simple and very uniform: substitution of equal expressions for equal expressions

More information

Guides for Installing MS SQL Server and Creating Your First Database. Please see more guidelines on installing procedure on the class webpage

Guides for Installing MS SQL Server and Creating Your First Database. Please see more guidelines on installing procedure on the class webpage Guides for Installing MS SQL Server and Creating Your First Database Installing process Please see more guidelines on installing procedure on the class webpage 1. Make sure that you install a server with

More information

Key components of a lang. Deconstructing OCaml. In OCaml. Units of computation. In Java/Python. In OCaml. Units of computation.

Key components of a lang. Deconstructing OCaml. In OCaml. Units of computation. In Java/Python. In OCaml. Units of computation. Key components of a lang Deconstructing OCaml What makes up a language Units of computation Types Memory model In OCaml Units of computation In OCaml In Java/Python Expressions that evaluate to values

More information

Incoherent Rant about Code

Incoherent Rant about Code Incoherent Rant about Code Aras Pranckevičius Unity Unity Bootcamp II, 2010 Nov-Dec This is pretty much on random code related things with no structure. Expect lots of topic jumps for no reason at all!

More information

Social Media at Work Quiz

Social Media at Work Quiz Social Media at Work Quiz 4669 Quiz- SOCIAL MEDIA AT WORK 1. Malware is a term that describes: a) Software that you purchase from third party vendors. b) Software that you buy directly from the manufacturer.

More information

DIGITAL PRODUCT DESIGN

DIGITAL PRODUCT DESIGN DIGITAL PRODUCT DESIGN MAT THEW ALDRICH SIA Project Overview Purpose The purpose of this product challenge is to design a product feature for CarsDirect Mobile, an online automotive research portal and

More information

SystemDesk - EB tresos Studio - TargetLink Workflow Descriptions

SystemDesk - EB tresos Studio - TargetLink Workflow Descriptions SystemDesk - EB tresos Studio - TargetLink Workflow Descriptions Usable with Versions: dspace SystemDesk 4.1 EB tresos Studio 13 or 14 TargetLink 3.4 or TargetLink 3.5 (with patches) February, 2014 1 /

More information

18-642: Race Conditions

18-642: Race Conditions 18-642: Race Conditions 10/30/2017 Race Conditions Anti-Patterns for Race Conditions: Unprotected access to shared variables Shared variables not declared volatile Not accounting for interrupts and task

More information

JOBS Load Regulation. Ulf Wiger, Feuerlabs Inc Erlang User Conference, Stockholm 14 June Saturday, 15 June 13

JOBS Load Regulation. Ulf Wiger, Feuerlabs Inc Erlang User Conference, Stockholm 14 June Saturday, 15 June 13 JOBS Load Regulation Ulf Wiger, Feuerlabs Inc Erlang User Conference, Stockholm 14 June 2013 Major contributor to downtime In Telecoms, nearly half of registered downtime is due to overload (source: FCC)

More information

By Jon Duckett Web Design with HTML, CSS, JavaScript and jquery Set (1st Edition) Click here if your download doesn"t start automatically

By Jon Duckett Web Design with HTML, CSS, JavaScript and jquery Set (1st Edition) Click here if your download doesnt start automatically By Jon Duckett Web Design with HTML, CSS, JavaScript and jquery Set (1st Edition) Click here if your download doesn"t start automatically By Jon Duckett Web Design with HTML, CSS, JavaScript and jquery

More information