~ubuntu-branches/ubuntu/trusty/erlang/trusty

« back to all changes in this revision

Viewing changes to lib/dialyzer/test/race_tests_SUITE_data/src/ets_insert_double2.erl

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum
  • Date: 2011-05-05 15:48:43 UTC
  • mfrom: (3.5.13 sid)
  • Revision ID: james.westby@ubuntu.com-20110505154843-0om6ekzg6m7ugj27
Tags: 1:14.b.2-dfsg-3ubuntu1
* Merge from debian unstable.  Remaining changes:
  - Drop libwxgtk2.8-dev build dependency. Wx isn't in main, and not
    supposed to.
  - Drop erlang-wx binary.
  - Drop erlang-wx dependency from -megaco, -common-test, and -reltool, they
    do not really need wx. Also drop it from -debugger; the GUI needs wx,
    but it apparently has CLI bits as well, and is also needed by -megaco,
    so let's keep the package for now.
  - debian/patches/series: Do what I meant, and enable build-options.patch
    instead.
* Additional changes:
  - Drop erlang-wx from -et
* Dropped Changes:
  - patches/pcre-crash.patch: CVE-2008-2371: outer level option with
    alternatives caused crash. (Applied Upstream)
  - fix for ssl certificate verification in newSSL: 
    ssl_cacertfile_fix.patch (Applied Upstream)
  - debian/patches/series: Enable native.patch again, to get stripped beam
    files and reduce the package size again. (build-options is what
    actually accomplished this)
  - Remove build-options.patch on advice from upstream and because it caused
    odd build failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%% This tests the presence of possible races due to an ets:lookup/ets:insert
 
2
%% combination. It takes into account multiple ets:inserts that might exist.
 
3
 
 
4
-module(ets_insert_double2).
 
5
-export([start/2]).
 
6
 
 
7
start(Random, Pass) ->
 
8
  io:format("Created ~w\n", [ets:new(foo, [named_table, public])]),
 
9
  ets:insert(foo, {Random, random:uniform(150)}),  
 
10
  io:format("Inserted ~w\n", [{_, N}] = ets:lookup(foo, Random)),
 
11
  case (N rem 2 == 0) of
 
12
    true ->
 
13
      io:format("\nInserted an even integer\n", []),
 
14
      io:format("\nWill make it odd and generate new password\n", []),
 
15
      ets:insert(foo, [{Random, N+1}, {Pass, generate_password(Pass, N)}]);
 
16
    false ->
 
17
      io:format("\nInserted an odd integer\n", []),
 
18
      io:format("\nWill make it even and generate new password\n", []),
 
19
      ets:insert(foo, [{Random, N+1}, {Pass, generate_password(Pass, N)}])
 
20
  end,
 
21
  io:format("Update complete\n", []),
 
22
  ObjectList = ets:lookup(foo, Pass),
 
23
  io:format("New password: ~w\n", [ObjectList]),
 
24
  ets:insert(foo, {Pass, 'empty'}).
 
25
 
 
26
generate_password(Pass, N) ->
 
27
  [{_, P}] = ets:lookup(foo, Pass),
 
28
  lists:map(fun (_) -> random:uniform(90)+P+$\s+1 end, lists:seq(1,N)).